gpt4 book ai didi

PHP PDO INSERT WHERE NOT EXISTS 语句不起作用

转载 作者:行者123 更新时间:2023-11-29 01:14:02 26 4
gpt4 key购买 nike

通过 PDO 向 MySQL 插入查询时出现非常奇怪的错误。

如果此表中不存在此记录,我想在表中插入记录。

$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();
}

它抛出异常:调用非对象上的成员函数 execute()。

我不明白我在 SQL 命令中的错误在哪里。其他代码片段是正确的,因为当我将 SQL 命令更改为其他命令时(例如:SELECT :key_text as kt)它可以正常工作。

感谢您的回答。

更新:错误是:

[0] => HY000[1] => 1096[2] => 没有使用表格

如何为 MySQL 编写正确的 SQL 命令?变体

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 表的查询有效!

最佳答案

您的准备​​调用失败了,而您只是假设它成功了。

尝试

    $preparedStatement = $db->prepare($query) or die($db->errorInfo());

捕捉错误。

关于PHP PDO INSERT WHERE NOT EXISTS 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com