【发布时间】:2014-09-05 03:54:02
【问题描述】:
我不知道为什么这不起作用:
$stmt_field_exists = $db->prepare("SHOW COLUMNS
FROM uf_users
LIKE :field_name");
$sqlVars[':field_name'] = "%display_name%";
prepare 语句出现错误,
SQLSTATE[42000]: 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 '?' at line 3
起初我以为我要么错误地使用了SHOW COLUMNS 查询,要么错误地形成了占位符,但是当我单独尝试这两个中的任何一个时,它们都可以正常工作:
// Works fine
$stmt_field_exists = $db->prepare("SELECT display_name
FROM uf_users
WHERE display_name LIKE :value");
$sqlVars[':value'] = "%admin%";
// Also works fine
$stmt_field_exists = $db->prepare("SHOW COLUMNS
FROM uf_users
LIKE '%display_name%'");
我使用的是 MySQL 5.5.31。这到底是怎么回事?我发现错误了吗?
【问题讨论】:
-
请提供完整的错误信息。
-
你能创建一个最小的代码来重现这个问题吗?
-
当,应该在高峰时段问这个问题。如果您已将
$db定义为 PDO 数据库对象(我当然会这样做),这应该可以正常工作。
标签: php mysql sql pdo sql-like