2013-04-26 117 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

相关问题