PHP PDO错误和成功消息

问题描述:

我刚刚将我的SQLi转换为PDO。我不是100%确定如何编制PDO声明以包含ERRORSUCCESS声明。我已经包含下面我的代码部分:PHP PDO错误和成功消息

// query 
$sql = "INSERT INTO data (avatar,citid,birthday,citname,level,experience,rank,rankimage,elite_citizen,points,strength,status,citizenship,mu,date) VALUES (:avatar,:citid,:birthday,:citname,:level,:experience,:rank,:rankimage,:elite_citizen,:points,:strength,:status,:citizenship,:mu,:date)"; 
$q = $conn->prepare($sql); 
$q->execute(array(':avatar'=>$avatar,':citid'=>$citid,':birthday'=>$birthday,':citname'=>$citname,':level'=>$level,':experience'=>$experience,':rank'=>$rank,':rankimage'=>$rankimage,':elite_citizen'=>$elite_citizen,':points'=>$points,':strength'=>$strength,':status'=>$status,':citizenship'=>$citizenship,':mu'=>$mu,':date'=>$date)); 

在MySQL中,我发现它更容易使用下面的语句:

// if successfully insert data into database, displays message "Successful". 
if($result){ 
echo "Successful"; 
echo "<BR>"; 
} 

else { 
echo "ERROR"; 
} 

我将如何完成对PDO一样吗?

+0

两个问题。 1.如果出现错误,你想要做什么? 2.你为什么认为会出现错误? –

+0

我有一个计划任务,运行并在'INSERT'或'UPDATE'上记录'error'或'success',我自定义任一消息以便我可以检查出错的地方,我遇到的主要问题是每个' INSERT'或'UPDATE'可能需要1分钟,因为它远程为'JSON'提取数据 – user2517479

+0

想象一下上面的语句中有一个错误。什么肯定不会让你满意? –

我该如何完成PDO的相同操作?

PDO使用例外(默认情况下)。这意味着您可以使用try-catch块来捕获发生的异常并打印出错消息。

如果一切顺利,错误消息块将被跳过,如果发生错误,成功消息将被跳过并且catch块将被运行。

try { 
    // pdo code 
    // success message 
} catch(PDOException $e) { 
    // error message 
} 

在您的具体情况:

try { 
    $sql = "..."; 
    $q = $conn->prepare($sql); 
    $q->execute(array(...)); 
    echo 'Good'; // success message 
} catch(PDOException $e) { 
    echo 'Bad'; // error message 
} 
+0

感谢上面的例子它的工作,我会用你的例子 – user2517479

+1

不要忘了标记问题已解决的问题。不要害怕[阅读关于PDO的文档](http://www.php.net/manual/en/pdo.prepared-statements.php)。 – SamSquanch

+0

我很新PDO,所以我会有很多哟学习,我会阅读上述网址,我一直认为PDO将是困难的 – user2517479

通过检查execute返回结果:

$sql = "INSERT INTO `data` (`avatar`) VALUES (:avatar)"; 
$stmt = $conn->prepare($sql); 
$res = $stmt->execute(array(':avatar' => $avatar)); 

if ($res === true) { 
    echo 'Success'; 
} 
else { 
    echo 'Error'; 
}