PHP 准备语句未插入,没有出现错误

问题描述 投票:0回答:1

我正在尝试通过 PHP 中的准备好的语句插入一些数据。我有以下代码,但没有为我插入。我也已经设置了以下代码

ini_set('display_errors', 1);

error_reporting(~0);

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $sqlInsert = "INSERT INTO deck_cards (deckid, cardid, qty) VALUES (?,?,?)";
    $stmtInsert = $conn->prepare($sqlInsert);
    
    if ($stmtInsert)
    {
        $stmtInsert->bind_param("sss", $deckid, $cardid, $cardcount) or trigger_error($stmtInsert->error, E_USER_ERROR);
        $stmtInsert->execute() or trigger_error($stmtInsert->error, E_USER_ERROR);
        echo "Check if this ran";
    }
    else {
        echo "Error: " . $sql . "<br>" . $conn->error;
        $conn->close();
    }

    $stmtInsert->close();
}
catch (Exception $ex)
{
    echo 'Exception occurred '.$ex->getTraceAsString();
}

执行此操作时,我确实看到文本“检查此操作是否已运行”,但没有其他消息。数据未插入数据库。此外,我回显了 SQL 字符串和变量,并直接针对 MySQL 运行它,并且插入正常。不确定上面我非常简单的代码中发生了什么。

此外,在我的应用程序内的其他页面中插入操作正常,但此页面由于某种原因无法正常工作。

我知道这对我的错误报告来说有点矫枉过正,但我尝试了所有我能想到的方法来看看某个地方是否有错误,但这对我来说是一个令人头疼的问题。感谢您的帮助!

php mysqli prepared-statement
1个回答
0
投票

如果您的查询看似不起作用,可能是由以下原因引起的:

  1. 由于程序逻辑不正确,SQL根本没有运行。添加临时调试输出以确保代码到达查询执行的位置(您已经这样做了)。
  2. 执行期间出现错误,请检查此答案以获取正确错误报告中的详细信息
  3. SQL执行成功,但在错误的数据库中查看结果。如果是 INSERT 查询,则打印 $conn->insert_id 的结果。另外,尝试在这段代码中选择回插入的值。
  4. 代码中某处有一个开放事务/自动提交设置为 0,但没有显式提交。
  5. 如果是 SELECT 查询,则输入数据可能与数据库不匹配。以下是一些关于如何检查
  6. 的建议
© www.soinside.com 2019 - 2024. All rights reserved.