【发布时间】:2015-04-04 08:01:13
【问题描述】:
这是我的代码:
$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]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 239 行的 C:\wamp\www\fani\inc\class\user.php 的第 1 行的 ''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)
代码运行正常,有什么问题?
【问题讨论】:
-
您只能绑定列值。不是列名、表名或限制。
-
我试试这个,它奏效了。但我不确定这是不是最好的方法。 $PDO->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); stackoverflow.com/questions/2269840/how-bindvalue-in-limit