想了半天,终于解决了。。。
我有一个脚本可以针对数据库进行计算,以查看是否应该删除任何行。
$number = count($INSERT)-count($INDB);
$number 变量要么是
- $number = 0,这意味着不应该删除或插入任何行
- $number > 0,这意味着我们需要插入行
- $nubmer < 0,这意味着我们需要删除一些行
1. 和 2. 有效 - 但 3. 给了我一个错误。
if($number < 0){
$limit = abs($number);
echo "DELETE FROM pversions
WHERE fk_p_id = $pid
ORDER BY pversion_id DESC
LIMIT $limit";
$remVersions = $pdo->prepare("
DELETE FROM pversions
WHERE fk_p_id = :pid
ORDER BY pversion_id DESC
LIMIT :lmt");
$remVersions->execute(array(":pid" => $pid, ":lmt" => $limit));
$left = count($versions)-$limit;
}
回声可能会返回这个:
DELETE FROM pversions WHERE fk_p_id = 1 ORDER BY pversion_id DESC LIMIT 1
但这给了我这个 PDO 异常:
Fatal error: Uncaught exception 'PDOException' with message '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 ''1'' at line 4'
如果我从上面获取回声的确切输出并将其输入到 PhpMyAdmin 中,则根本没有问题。它完全按照我想要的方式执行任务。
如果我删除LIMIT :lmt
错误未显示,它会删除所有行。所以我很确定错误在“LIMIT”中。
希望有人能告诉我我在这里做错了什么。