PHP与数据库进行交互的前提是先要从前端js拿到数据,拿到数据后,再与数据库进行交互,最后将结果返回给前端。
(1)PHP得到数据
$data = $_GET;
$data = $_POST;
看前端设置请求类型为GET就是$_GET,反之则为$_POST
(2)PHP与数据库交互
这里我使用了MYSQL数据库,当然不同人对于数据库选择是不同,因此就出现了一个兼容性的问题,这里PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。这就解决了兼容性的问题。因此接下来的操作都通过PDO来进行。
$dbms='mysql'; //数据库类型
$host='localhost'; //数据库主机名
$dbName='gather'; //使用的数据库
$user='root'; //数据库连接用户名
$pass=''; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
参数设置成功后使用PDO对象进行连接
$object = new PDO($dsn,$user,$pass,array(PDO::ATTR_PERSISTENT => true));//建立长连接
//$object = new PDO($dsn, $user, $pass);//不建立长连接
$sql="select * from uesrTable";
$result = $object->query($sql);
$userlist = array();
while($arr=$result->fetch()) {
$userlist[$arr[0]] = $arr[1];
}
连接成功后设置数据库操作$sql,最终得到的结果在$result中,通过fetch()函数得到具体参数,注意一次性取出的一行数据按照$arr[0,1,2,3.....]的顺序访问。
(3)一些基本的数据库操作举例:
①选择指定ID的一行数据
$sql = "select * from origintable WHERE (id = '{$clothid}')";
$sql = "select * from origintable WHERE (depository= '{$depository}' AND shelf = '{$k}')";
②插入一行新的数据
$sql ="INSERT INTO `gather`.`ordertable` VALUES ('{$time}', {$cnt}, '{$clothid}','{$clothflag}', '{$clothamount}','{$username}', '{$useraddress}',{$flag},'{$ordername}')";
注意这里的$cnt与$flag没有在{}外加' ',因为它们并不是字符串类型,这个时候加了字符串写入数据会出现错误。
③删除指定ID的数据
$sql ="DELETE FROM `gather`.`projecttable` WHERE (`time` = '{$time}')";
(4)PDO查看错误信息
如果读写数据的时候前端没有返回值,但是后台PHP没有报错,那么很有可能就是PDO交互数据时没有成功,因此导致返回值不正确,这个时候查看对应的错误信息可以帮助debug。主要操作如下:
$pdo->errorCode()
$pdo->errorInfo()
errorCode()只显示SQLSTATE的值
errorInfo()返回的错误信息的数组 数组中包含三个单元(SQLSTATE,CODE,INFO)
(5)结果返回给前端
将数据经过json编码后传给前端,然后前端中的success或者error函数会根据操作执行成功与否对应执行,此时就完成了整个交互过程。
echo json_encode($result);