2013-04-26 158 views
3

我正在收集用戶的信息,然後將它們添加到表中。從mysqli_query獲得成功/失敗響應

$insert = "INSERT INTO jos_activeagents (RINGPHONE, AGENTUID, FNAME, LNAME) VALUES ('(618) 717-2054','".$result['AGTBRDIDMM']."','".$result['AGTFNAME']."','".$result['AGTLNAME']."')"; 

$set = mysqli_query($link,$insert); 

AGENTUID是一個獨特的關鍵。如果用戶試圖使用重複的唯一密鑰進行提交,我會收到錯誤(當然)。

現在,我該如何去了解是否以及何時發生錯誤,然後將響應回覆給頁面?我知道mysqli_get_warnings(),但PHP手冊沒有顯示任何示例。

我也試圖尋找該表第一AGENTUID

$check = "SELECT * FROM jos_activeagents WHERE AGENTUID = '".$agt."'"; 

$runcheck = mysqli_query($link,$check); 

$rescheck = mysqli_fetch_assoc($runcheck); 

if($rescheck != null){ 

    echo 'This Agent ID is already enrolled.' 

} 

但這似乎邋遢。有沒有更好的方法做到這一點?

+1

不使用mysql_ *因爲...哦,等等,有人不使用mysql_ *!恭喜! :D – 2013-04-26 14:22:08

+0

我知道。剛剛轉換。 ;) – Plummer 2013-04-26 14:23:03

+3

雖然不使用mysql_ *,但數據直接放入查詢中。如果這不僅僅是一個例子,仍然可能容易受到SQL注入的影響! – WouterH 2013-04-26 14:23:22

回答

2

您可以使用mysqli_error(),看看是否出現了錯誤

if (mysqli_error($runcheck)) 
{ 
    // an error eoccurred 
} 

在你的具體的例子你檢查的更好,如果行存在之前做插入。你舉的例子是接近,但將更好地利用mysqli_num_rows()

$check = "SELECT * FROM jos_activeagents WHERE AGENTUID = '".$agt."'"; 
$runcheck = mysqli_query($link,$check); 
if (mysqli_num_rows($runcheck) > 0) 
{ 
    // username in use 
} 
+0

真棒,謝謝! – Plummer 2013-04-26 14:22:43

+0

此方法使用單個查詢並返回一個字符串,指示插入的狀態:http://stackoverflow.com/questions/13985950/mysql-if-exists-error – Mark 2015-10-24 03:10:17

+0

不知道爲什麼你沒有得到一個投票選出正確的答案。 +1我的同胞朋友 – 2016-09-12 15:06:37

相關問題