【问题标题】:PDO insert error without error displayPDO插入错误无错误显示
【发布时间】:2015-04-17 05:43:15
【问题描述】:

嘿, 这个 pdo 插入有一些错误:

            $query = $pdo->prepare("INSERT INTO matches (teamA, teamB, start, lenght) VALUES (:teamA, :teamB, :start, :length)");
            $query->execute(array(
                ':teamA' => $_GET['teamA'],
                ':teamB' => $_GET['teamB'],
                ':start' => $_GET['start'],
                ':lenght' => $_GET['length']
            ));

pdo 不会引发任何错误,但不会在这一行插入我的数据库

我用jQuery这样调用php文件:

$('.load').load('request.php?type=save&table=matches&teamA=' + homeTeam.children("select").val() + '&teamB=' + awayTeam.children("select").val() + '&start=' + start.children("select").val() + '&length=' + length.children("select").val());

jQuery 工作正常,我测试过,但 pdo 不行,请帮助我。

【问题讨论】:

  • 您确定“长度”这个词的拼写正确吗?你可能在某个地方有错字。在打开连接后立即添加$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);,如果您还没有这样做的话。如果您有其他错误,错误报告 php.net/manual/en/function.error-reporting.php 也可能会有所帮助。
  • 您对某些内容进行了编辑,将 lenght 更改为 length,但未将您的列名 lenght':lenght' => 更改为':lenght' =>
  • 执行中的:lenght 与准备中的:length 不匹配
  • ...这就是ERRMODE_EXCEPTION 发出的信号^
  • @Fred-ii- HAhahahah 哦天哪。随时发布您的答案,您是第一个注意到错误的人

标签: php jquery mysql pdo


【解决方案1】:

尝试跟踪执行错误:

$query = $pdo->prepare("INSERT INTO matches (teamA, teamB, start, lenght) VALUES (:teamA, :teamB, :start, :length)");

        if ($query->execute(array(

                    ':teamA' => $_GET['teamA'],
                    ':teamB' => $_GET['teamB'],
                    ':start' => $_GET['start'],
                    ':lenght' => $_GET['length']
                )) ) {
    echo 'Query executed succsessfully!';
    } else {
        echo 'Failed to execute query! Error: '.$query->errorInfo();
}

【讨论】:

    【解决方案2】:

    好的,我正在回答这个问题。

    您的列和绑定不匹配。

    你有lenghtlength

    他们都应该读作length,拼错了。

    $query = $pdo->prepare("INSERT INTO matches (teamA, teamB, start, length)  
     VALUES (:teamA, :teamB, :start, :length)");
    
        $query->execute(array(
            ':teamA' => $_GET['teamA'],
            ':teamB' => $_GET['teamB'],
            ':start' => $_GET['start'],
            ':length' => $_GET['length']
        ));
    

    检查错误会发出错误信号

    在打开连接后立即添加以下内容:

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

    error reporting 添加到文件顶部,这将有助于查找错误。

    <?php 
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    
    // rest of your code
    

    旁注:错误报告只能在暂存阶段完成,而不能在生产阶段完成。

    【讨论】:

    • 好吧,至少将错误告知最终用户。报告应始终进行,应始终进行检查,并应始终加以说明;-) @Fred -ii- Mornin' Ralph
    • @JayBlanchard ...并且应该始终在自己身边喝一杯烈酒;无论是 20 年。苏格兰威士忌或双份浓缩咖啡 - Mornin' Sam
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2013-07-28
    • 2015-05-31
    相关资源
    最近更新 更多