php - 执行 PDO 语句的更好方法

标签 php mysql pdo

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

$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 手册中,他们这样写 prepare 语句

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

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

最佳答案

您的方法会起作用,但默认情况下会将绑定(bind)参数转义为字符串。我认为最佳做法是使用 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();

关于php - 执行 PDO 语句的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822416/

相关文章:

php - 使用 javascript 或 PHP 如何使用下拉列表或文本框中的值。

php - 在端口 8080 上运行的 Apache 会阻止 JavaScript 中的动态加载脚本吗?

javascript - Ajax 到 PHP 安全登录脚本

mysql - 部署在另一台计算机上时,应用程序未连接到数据库

mysql 默认字符集在被 php 调用时不同

php - 在模板中使用 symfony 的动态菜单

mysql - 合并两个表并在列中分配 1/0

php - 我可以在 PHP 中混合使用 MySQL API 吗?

mysql - PHP;原产地保护组织;数据库; INSERT 查询不接受输入

php - 删除数据后重新整理数据库中的id字段