2

想了半天,终于解决了。。。

我有一个脚本可以针对数据库进行计算,以查看是否应该删除任何行。

$number = count($INSERT)-count($INDB);

$number 变量要么是

  1. $number = 0,这意味着不应该删除或插入任何行
  2. $number > 0,这意味着我们需要插入行
  3. $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”中。

希望有人能告诉我我在这里做错了什么。

4

0 回答 0