gpt4 book ai didi

php - 如何在 pdo 语句中绑定(bind)限制值?

转载 作者:行者123 更新时间:2023-11-29 03:32:00 27 4
gpt4 key购买 nike

这是我的代码:

$sql="SELECT duration,address,roozhaye_bargozari, ";
$sql.="ostan_name,city_name,cluster_name,education_node.name ";
$sql.="FROM class ";
$sql.="LEFT JOIN education_cluster ec ON ec.id=class.cluster_id ";
$sql.="LEFT JOIN education_node ON education_node.id=class.node_id ";
$sql.="LEFT JOIN ostan ON ostan.id=class.ostan_id ";
$sql.="LEFT JOIN city ON city.id=class.city_id ";
$sql.="WHERE class.master_id=? LIMIT ?,?";

$result=$db->prepare($sql);
$result->execute(array($master_id,$startpos,$endpos));
$final_result=$result->fetchAll(PDO::FETCH_ASSOC);

当我使用这段代码时,出现了这条错误信息: PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 C:\wamp\www\fani\inc\class\user.php 的第 239 行 <'0','2'' 附近使用的正确语法

但是如果我使用这个:

.
.
.
$sql.="WHERE class.master_id=? LIMIT $startpos,$endpos";

$result=$db->prepare($sql);
$result->execute(array($master_id);
$final_result=$result->fetchAll(PDO::FETCH_ASSOC)

代码运行正常,问题是什么?

最佳答案

仔细观察错误...

''0','2''

并注意那里的引号。 execute 导致查询失败,因为它添加了单引号并将整数视为字符串。您的第二个查询起作用的原因是因为您将数字直接插入到查询中而不是绑定(bind)它们。为了让它工作,你需要做这样的事情......

$result=$db->prepare($sql);
$result->bindParam(1, $master_id, PDO::PARAM_INT);
$result->bindParam(2, $startpos, PDO::PARAM_INT);
$result->bindParam(3, $endpos, PDO::PARAM_INT);
$result->execute();
$final_result=$result->fetchAll(PDO::FETCH_ASSOC);

关于php - 如何在 pdo 语句中绑定(bind)限制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29444107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com