Php PDO不抛出错误

Php PDO不抛出错误,php,mysql,pdo,Php,Mysql,Pdo,我使用以下代码在数据库中插入新记录: <?php require('comune.php'); $nome = $_POST['nome']; $username = $_POST['username']; $segreto = $_POST['password']; $password = md5($segreto); $validity = $_POST['validity']; $ruolo = $_POST['ruolo']; $funzione = $_POST['funzio

我使用以下代码在数据库中插入新记录:

<?php

require('comune.php');
$nome = $_POST['nome'];
$username = $_POST['username'];
$segreto = $_POST['password'];
$password = md5($segreto);
$validity = $_POST['validity'];
$ruolo = $_POST['ruolo'];
$funzione = $_POST['funzione'];
list($giorno, $mese, $anno) = explode('/', $validity);
$validity = implode('-', array($anno, $mese, $giorno));

try {
    $sql = "INSERT into utenti "
            . "(nome,username,segreto,password,validity,ruolo,funzione) "
            . "VALUES ('$nome', '$username', '$segreto', '$password', '$validity', '$ruolo', '$funzione')";
    $s = $pdo->prepare($sql);
    $s->execute();
} catch (PDOException $e) {
    $message = "ko";
}
$message = "ok";
//echo $sql;
echo $message;
?>
将代码更改为

$sql = "INSERT into utenti (nome,username,segreto,password,validity,ruolo,funzione) "
        . "VALUES (?,?,?,?,?,?,?)";
$s = $pdo->prepare($sql);
$s->execute([$nome, $username, $segreto, $password, $validity, $ruolo, $funzione]);
echo "ok";

您将收到ok或提示性错误消息

您正在覆盖
$message
变量,因此输出将始终是
ok
。您完全可以接受SQL注入。@meagar我知道,但这只是在
try catch
块之前显示问题的示例代码。
$message=“ok”
。这样,默认情况下,
$message
ok
。如果生成错误,它将被覆盖。最好保留try-catch块:在catch循环中,我添加了$message=“ko”;回声$信息;退出();一切都是ok@LelioFaieta这不是更好。回显ok没有意义,退出()也没有意义;成功时应该有HTTP重定向,错误时应该有500错误您的ajax应该识别HTTP响应代码。如果它与200不同,那么它是错误的。出于某种奇怪的原因,您认为只有PDO可以导致错误,而它可以是任何代码。同时,必须记录完整的错误信息,而不是回显无用的错误信息