8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

SQL 查询不起作用,没有出现错误

josephcvh 2月前

48 0

我正在尝试通过 PHP 中的准备好的语句插入一些数据。我有以下代码,但无法插入。我还有以下代码设置 alreadyini_set('display_errors', 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 运行它,它插入成功。不确定上面非常简单的代码中发生了什么。

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

我知道这对我的错误报告来说有点过度了,但我尝试了所有我能想到的方法,看看是否有错误,但这个对我来说很头疼。谢谢您的帮助!

帖子版权声明 1、本帖标题:SQL 查询不起作用,没有出现错误
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由josephcvh在本站《php》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 你确定这三个参数都是字符串吗?变量名看起来更像“iii”,因为你有两个 ID 和一个计数器。你的数据库字段的数据类型是什么?

  • 这种过度的错误处理实际上可能会隐藏正确的错误。您应该将其全部删除,只保留 3 行:准备、绑定和执行。

  • @Dharman,是的,我也是这么想的,我整个早上都在为此绞尽脑汁,看起来很简单,也许我会尝试不带准备好的语句进行测试,看看会发生什么

  • 如果您的查询似乎不起作用,则可能是由以下原因造成的:

    • ,SQL 根本无法运行 。在尽可能多的地方添加临时调试输出(或使用编辑器中的分步调试功能)以跟踪程序的逻辑并确保代码确实到达了必须执行查询的位置。
    • 查询执行过程中出现错误 。查看这些答案以获取有关如何为 mysqli PDO .

    因此您的代码应该是这样的(考虑到前三行应该移动到您在此处包含的某个引导文件中)

    echo "Start\n"; // debugging statement, remove after resolving the issue
    
    $sqlInsert = "INSERT INTO deck_cards (deckid, cardid, qty) VALUES (?,?,?)";
    $stmtInsert = $conn->prepare($sqlInsert);
    $stmtInsert->bind_param("sss", $deckid, $cardid, $cardcount);
    
    echo "INSERT done\n"; // debugging statement, remove after resolving the issue
    

    如果查询确实执行了,并且没有错误,则表示查询成功但您仍然无法观察到所需的结果:

    • 对于没有返回预期值的 SELECT 查询,肯定是输入数据与数据库中的数据不匹配。以下是一些有关 如何调试的
    • 如果是 INSERT(或其他数据修改查询),则结果可能在 错误的数据库 。要获得证明,请打印出 insert_id / affected_rows 和/或 的结果 mysqli_info() 。您还可以选择插入的数据并在此处(INSERT 正下方)打印出来。然后仔细检查您用于查看结果的程序的数据库凭据。
    • 代码中某处有一个打开的事务或自动提交设置为 0,但没有显式提交。请检查您的代码并删除 begin 或添加 commit .
返回
作者最近主题: