繁体   English   中英

为什么这个简单的PDO准备好的语句不起作用?

[英]Why does this simple PDO prepared statement won't work?

$stmt =$dbh->prepare('SELECT * FROM config WHERE group=:group AND name=:name');
$stmt->bindParam(':group',$group, PDO::PARAM_STR);
$stmt->bindParam(':name',$name, PDO::PARAM_STR);

给出异常:

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server
version for the right syntax to use near 'group=? AND name=?' at line 1

试图将参数放在execute函数中,相同的消息。

我设置的PDO选项是:

PDO::ATTR_ERRMODE=> PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => FALSE,

group保留字 ,在MariaDB中,如果没有反引号,则不能用作标识符

SELECT * FROM `config` WHERE `group`= :group AND `name` = :name

group是SQL中的关键字。 您必须在未引用的情况下将其用作列名。 在MySQL中,列名之类的内容用反引号引起来,即:

$stmt =$dbh->prepare('SELECT * FROM config WHERE `group` = :group AND `name` = :name');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM