之前说过php跟js的最大的不同点就是能够直接与数据库打交道,存储信息,读取信息,与用户交互。这里总结了php连接数据库的比较全面和靠谱的三个步骤,简称三步曲。主要包括:
1、php创建数据库与表;
2、php往数据库插入内容;
3、php从数据库里面读取内容到前台显示出来;
首先是创建数据库和表:
$servername = "localhost";//数据库主机
$username = "root";//数据库用户名
$password = "root";//数据库密码
$dbname = "lyt";//将要创建的数据库名
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {die("连接出错: " . $conn->connect_error);}
// 开始创建数据库
$sql = "CREATE DATABASE lyt default character set utf8 collate utf8_general_ci";//红色为设置数据库编码格式,网上很多教程都漏了这一步,导致各种乱码现象
if ($conn->query($sql) === TRUE) {echo "数据库创建成功
";} else {echo "数据库创建失败: " .$conn->error;}
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 创建表和字段
$sql = "CREATE TABLE MyGuests(//红色为表名,下面的红色部分为表里面的字段,同样也要设置编码,VARCHAR是字段存储数据的类型
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
product VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci,
guestname VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
phone VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
address VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
message VARCHAR(550) CHARACTER SET utf8 COLLATE utf8_general_ci,
reg_date TIMESTAMP
)default character set utf8";
$conn->exec($sql);echo "数据表创建成功";
}
catch(PDOException $e){echo $sql . "
" . $e->getMessage();}
?>
把这段代码塞到php文件里面,通过访问这个php页面就可以创建一个lyt的数据库,数据库里面有MyGuests表,表里面有id,product,guestname,phone,address,message,reg_date字段,但是里面还是空空如也,我们要往里面插入数据,比如说把客户填写的一个表单数据提交到数据库,就要用以下php代码了:
$servername = "localhost";//数据库主机
$username = "root";//数据库用户名
$password = "root";//数据库密码
$dbname = "lyt";//将要创建的数据库名
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("数据库连接失败: " . mysqli_connect_error());
}
mysqli_query($conn,"SET NAMES UTF8");//红色为设置数据库编码格式,网上很多教程都漏了这一步,导致各种乱码以及错误现象
$sql = "INSERT INTO MyGuests (product, guestname, phone, address, message)
VALUES ('".$_POST['pro']."','".$_POST['gname']."', '".$_POST['phone']."', '".$_POST['addr']."', '".$_POST['mess']."')";//蓝色部分分别为表单input的name值,注意表单类型必须为post。
if (mysqli_query($conn, $sql)) {
echo "提交成功";
} else {
echo "错误: " . $sql . "
" . mysqli_error($conn);
}
?>
把这段代码扔到一个form.php文件里面,作为表单的处理文件,表单上通过引入这个文件,如:
,这样提交表单的时候就会把表单里面填写的数据插入到数据库。除了表单你也可以手动指定插入一些数据,上面的那部分代码写成死的就行了,如:VALUES ('哈哈','你好', '我很好', '你呢?', '我不好!')";通过这一步,数据库总算有内容了。可是光有内容不行啊,我该怎么看到这些数据呢?我总不会去数据库里面看吧,还是要把数据库内容在前端表现出来才方便些,那么就要php从数据库里面读取数据了,代码如下:
$conn = mysql_connect("localhost","root","root");//连接数据库,请填写你自己的用户名密码
mysql_select_db("lyt");//选择MYSQL数据库
mysql_query("set names utf8");//设置为utf8编码
$result = mysql_query("select * from myguests",$conn); //执行SQL查询指令,myguests为表名
echo "
while($field = mysql_fetch_field($result)){//使用while输出表头
echo "
".$field->name." ";}
echo"
";while($rows = mysql_fetch_row($result)){//使用while遍历所有记录,并显示在表格的tr中
echo "
";for($i = 0; $i < count($rows); $i++)
echo "
".$rows[$i]."";}
echo "
";把这段代码扔到另一个php文件里面,通过访问这个php文件可以把指定的数据库,数据库表里面的内容以表格形式呈现出来。
其实这三段代码都用到了同一小块代码:
$servername = "localhost";//数据库主机
$username = "root";//数据库用户名
$password = "root";//数据库密码
$dbname = "lyt";//将要创建的数据库名
可以把这小段代码另存为另一php文件,通过include 'data.php';引入,这样方便修改。