我对这段代码没有问题,它出奇地工作正常,但我真的不明白它是如何工作的,甚至不明白它是否正确,所以:
我对 mysqli 进行 ajax post 或 get 调用的查询如下:
$con = mysqli_connect('localhost','root','','db') or die(header('Location: ./404.php'));
$add = "INSERT INTO table (id, id2, id3) VALUES('','$fid','')";
if(mysqli_query($con, $add)){
echo "added";
}
$remove = "DELETE FROM table WHERE id2='$fid'";
if(mysqli_query($con, $remove)){
echo "removed";
}
$getInfo = "SELECT * FROM table";
$result = $con->query($getInfo);
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()){
//do something
}
}
And for $_POST or $_GET values I used mysqli_real_escape_string
这里转换成PDO:
try{
$con = new PDO('mysql:host=localhost;dbname=db;charset=utf8mb4', 'root', '', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$get = $con->query("SELECT * FROM table");
foreach($get->fetchAll(PDO::FETCH_ASSOC) as $row){
$data['0'] = $row['name'];
$data['1'] = $row['email'];
return $data;
}
$add = $con->prepare("INSERT INTO table (id, id2, id3) VALUES(:f1,:f2,:f3)");
$add->execute(array(':f1' => '', ':f2' => $fid, ':f3' => ''));
echo "added";
$remove = $con->prepare("DELETE FROM table WHERE id2=:f1");
$remove->bindValue(':f1', $fid, PDO::PARAM_STR);
$remove->execute();
echo "removed";
}catch(PDOException $ex){
echo "error";
}
现在这可以工作,但我真的不知道它是否用 pdo 正确编写,我不需要使用 mysqli_real_escape_string 之类的东西与 mysqli 或类似的东西。
我在网上能找到的就是它现在是如何编写的,代码的哪一部分在做什么,例如当我在 mysqli 中使用插入、更新或删除时我使用
if(mysqli_query($con, $sql)){echo "success";}else echo 'fail';
我怎样才能用 pdo 做到这一点?
而且对于使用 try 和 catch 我不知道我是否需要在每个查询中使用它或者像我上面添加的那样?
只是再说一遍,我是 pdo 的新手,我不太理解它,上面的代码可以工作,但我不知道它是否以正确的方式编写?