我的SQL看起來像一個問題。我試圖通過文檔環顧四周,似乎無法找到我的錯誤。語法錯誤或訪問衝突:1064
繼承人的錯誤:
[11軍2014年17點56分46秒]警告:[池WWW]兒童12509說成標準錯誤:「注意:PHP消息:PHP致命錯誤:未捕獲的異常「PDOException '信息'SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法有錯誤;請查看與您的MySQL服務器版本相對應的手冊,以找到在'END WHERE id IN()'附近使用的正確語法。在/var/www/html/output.php:53「
我應該補充說,該代碼的工作原理是...只有當我嘗試添加以下$options
錯誤出現:
$options = array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
,代碼:
# Also prepare SQL for update below
$sql = "UPDATE `headlines` SET views = CASE id ";
foreach ($headlines as $headline) {
$id = $headline['id'];
$sql .= sprintf("WHEN %d THEN views + 1 ", $id);
}
# Update views
$placeholders = rtrim(str_repeat('?, ', count($ids)), ', ');
$sql .= "END WHERE id IN ($placeholders)";
$q = $db->prepare($sql);
$q->execute($ids);
生成的查詢:
UPDATE `headlines` SET views = CASE id WHEN 1364 THEN views + 1 WHEN 1365 THEN views + 1 WHEN 1366 THEN views + 1 END WHERE id IN (?, ?, ?)
它也有可能它可能是空的,像這樣的:
UPDATE `headlines` SET views = CASE id END WHERE id IN()
告訴我們生成的查詢。 –
我更新了我的問題。 – Tallboy
嘗試像這樣'CASE WHEN id = 1364 THEN views + 1 WHEN id = 1365 ...' – Mihai