PDO插入错误无错误显示

PDO insert error without error display

嗨, 这个 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 不行,请帮助我。

尝试跟踪执行错误:

$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();
}

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

您的列和绑定不匹配。

您有 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

旁注:错误报告只能在试运行中进行,绝不能在生产中进行。