我有一個非常奇怪的錯誤,插入查詢到MySQL通過PDO。PHP PDO INSERT WHERE NOT EXISTS語句不起作用
如果此表中尚未存在此記錄,我想在表中插入記錄。
$query = "INSERT INTO Phrases (KeyText)
SELECT * FROM (SELECT :key_text) as tmp WHERE NOT EXISTS (SELECT 1 FROM Phrases WHERE KeyText = :key_text)";
try
{
$preparedStatement = $db->prepare($query);
foreach ($phrases as $phrase)
{
$preparedStatement->execute(array(':key_text' => $phrase));
echo "-";
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
它引發exeption:調用一個非對象的成員函數execute()。
我不明白我的SQL命令錯誤在哪裏。其他代碼段是正確的,因爲當我將SQL命令更改爲其他時(例如:SELECT:key_text as kt)它正常工作。
感謝您的回答。
UPDATE: 錯誤是:
[0] => HY000 [1] => 1096 [2] =>否表中使用
我怎樣才能使正確的SQL命令對於MySQL? 變種與
INSERT INTO Phrases (KeyText)
SELECT :key_text WHERE NOT EXISTS (SELECT 1 FROM Phrases WHERE KeyText = :key_text)
也無法在MySQL中工作。
更新2:
INSERT INTO Phrases (KeyText)
SELECT :key_text FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM Phrases WHERE KeyText = :key_text)
該查詢與DUAL表的作品!
哎呀,對不起。應該是$ db-> errorInfo()。我會編輯答案。 –
錯誤是:[0] => HY000 [1] => 1096 [2] =>否表中使用 – Dmitriy
解始建於DUAL表。謝謝! – Dmitriy