执行 PDO 语句的更好方法

A better way to execute PDO statments

我目前正在以这种方式更新我的数据库

$db = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password');
$updo = $db->prepare("UPDATE table SET weight = :weight WHERE height = 28");
$updo->execute(array(':weight' => $weight));

这是正确的程序吗?有什么改进建议吗?在 PHP 手册中,他们写了这样的准备语句

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

这个额外的数组让我很困惑。我是第一次使用 PDO,所以想把事情弄清楚。

您的方法可以工作,但默认将绑定参数转义为字符串。我认为最佳做法是使用 bindParam 来指定 $weight 应该是一个整数,如下所示:

$db = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password');
$updo = $db->prepare("UPDATE table SET weight = :weight WHERE height = 28");
$updo->bindParam(':weight', $weight, PDO::PARAM_INT);
$updo->execute();