PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP-PDO Int占位符在他们周围得到报价大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

因此,以下代码使我有些烦恼:

    $stm = $pdo->prepare("SELECT * FROM urls WHERE account=? AND NOT deleted LIMIT ?, 4");
    $stm->execute($user, ($request-1)*4);

每当我执行此查询时,它都会返回此错误

Syntax error or access violation: 1064 You have an error in your sql Syntax; check the manual that corresponds to your MysqL server version for the right Syntax to use near ''0', 4' at line 1'

一经查找,似乎使用了?除非您使用bindParam指定,否则占位符会自动在引号周围加上引号.有什么方法可以解决这个问题,而不必使用bingparam函数吗?

解决方法:

这是一个已知问题,为什么不能真正将限制与绑定参数一起使用.但是,您可以通过单独绑定参数并将其命名为int来克服此问题.

$stm = $pdo->prepare("SELECT * FROM urls WHERE account=? AND NOT deleted LIMIT ?, 4");
$stm->bindValue(1, $user);
$stm->bindValue(2, ($request-1)*4), PDO::PARAM_INT);
$stm->execute();

如果读取PDOStatement::execute(),则是由于在执行时绑定导致所有参数都以字符串形式绑定.

正如Your Common Sense所指出的,可以通过以下方式禁用仿真模式,并让MysqL自己对占位符进行排序,尽管它可能不适用于所有数据库驱动程序(尽管对于MysqL而言):

$pdo->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );

或者,您可以执行intval或类型转换为int并将其直接放置在语句中,如果您愿意这样做的话.

大佬总结

以上是大佬教程为你收集整理的PHP-PDO Int占位符在他们周围得到报价全部内容,希望文章能够帮你解决PHP-PDO Int占位符在他们周围得到报价所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: