最今在开发一个简单的购物网站,所以在自己写php代码结合mysql来做一些查询啊,上传的操作,我对php其实不太熟悉,只会写点简单的代码来和js结合,做ajax传值。
PDO预查询
以前我都是用的mysql查询,后来才知道那是非常过时的产物,后来学了一点mysqli,再后来终于还是觉得pdo最好用了。一般我都是用的pdo预查询语句:
try {
$conn = new PDO("mysql:host=$server;dbname=$dbname",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("select * from user where uid = :uid");
$stmt->bindParam(":uid",$_POST["uid"]);
$stmt->execute();
$result = $stmt->fetchAll();
}catch(PDOException $e){
echo $e->getMessage();
}
这个语句对于我来说是万能的,不管需不需要传值,我都会用这个来查询结果,其中的参数是用的$_POST[“uid”],获取查询的结果用到了fetchAll();但是其实我们一般在用ajax获取json数据的时候要加上参数 fetchAll(PDO::FETCH_ASSOC);这样才会获取到我想要的结果。
ajax 与 pdo
我们ajax获取的一般都是json数据格式的数据,所以我们要对上面的代码做一些小的修改:
try {
$conn = new PDO("mysql:host=$server;dbname=$dbname",$username,$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("select * from user where uid = :uid");
$stmt->bindParam(":uid",$_POST["uid"]);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
}catch(PDOException $e){
echo $e->getMessage();
}
但是这样穿到js里面的值会被当作字符串,我们需要在ajax选项中添加额外的参数
$.ajax({
url: "pid.php",
method: "post",
data: {"uid","123"},
dataType: "json"
})
这样我们获取到的才是正常的json字符串。
记住:
- 服务端使用 json_encode();
- 客户端使用 dataType: “json”;