php与mysql数据库通信三步曲
作者:秋了秋 发表时间:2015年11月18日
之前说过php跟js的最大的不同点就是能够直接与数据库打交道,存储信息,读取信息,与用户交互。这里总结了php连接数据库的比较全面和靠谱的三个步骤,简称三步曲。主要包括:
1、php创建数据库与表;
2、php往数据库插入内容;
3、php从数据库里面读取内容到前台显示出来;
首先是创建数据库和表:
<?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 "数据库创建成功<br/>";} 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 . "<br>" . $e->getMessage();} ?>
把这段代码塞到php文件里面,通过访问这个php页面就可以创建一个lyt的数据库,数据库里面有MyGuests表,表里面有id,product,guestname,phone,address,message,reg_date字段,但是里面还是空空如也,我们要往里面插入数据,比如说把客户填写的一个表单数据提交到数据库,就要用以下php代码了:
<?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 . "<br>" . mysqli_error($conn); } ?>
把这段代码扔到一个form.php文件里面,作为表单的处理文件,表单上通过引入这个文件,如:
<form name="form" method="post" action="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 "<table border=1 style='margin:0 auto;'><tr>"; while($field = mysql_fetch_field($result)){//使用while输出表头 echo "<td> ".$field->name." </td>"; } echo"</tr>"; while($rows = mysql_fetch_row($result)){//使用while遍历所有记录,并显示在表格的tr中 echo "<tr>"; for($i = 0; $i < count($rows); $i++) echo "<td> ".$rows[$i]."</td>"; } echo "</tr></table>";
把这段代码扔到另一个php文件里面,通过访问这个php文件可以把指定的数据库,数据库表里面的内容以表格形式呈现出来。
其实这三段代码都用到了同一小块代码:
$servername = "localhost";//数据库主机 $username = "root";//数据库用户名 $password = "root";//数据库密码 $dbname = "lyt";//将要创建的数据库名
可以把这小段代码另存为另一php文件,通过include 'data.php';引入,这样方便修改。