2013-06-24 78 views
0

我剛剛將我的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

想象一下上面的語句中有一個錯誤。什麼肯定不會讓你滿意? –

回答

1

我該如何完成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

-1

通過檢查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'; 
}