2014-03-24 55 views
-1

我有下面的代码在数据库中插入新记录: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['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; 
?> 

我现在面临的问题是,即使该查询返回一个错误,$消息是“OK” 。我究竟做错了什么??

+6

你覆盖'$ message'变量,所以输出永远是'ok'。 –

+1

您已经开放SQL注入。 – meagar

+1

http://stackoverflow.com/questions/3726505/how-to-squeeze-error-message-out-of-pdo –

回答

0

改变你的代码

$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"; 

,你将有确定或错误提示信息

+0

最好保留try catch块:在catch循环中我添加了$ message =“ko”; echo $ message;出口();并且一切正常 –

+0

@LelioFaieta它不会更好。回声没有意义,exit()中没有任何意义。应该有HTTP重定向成功或500错误错误 –

+0

回声“ok”或“ko”,因为这是ajax请求的一部分... –