【发布时间】:2013-04-26 14:19:36
【问题描述】:
我正在从用户那里收集信息,然后将它们添加到表格中。
$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.'
}
但这似乎很草率。有更好的方法吗?
【问题讨论】:
-
不要使用 mysql_* 因为...哦等等,不使用 mysql_* 的人!恭喜! :D
-
当不使用 mysql_* 时,数据被直接放入查询中。如果这不仅仅是一个例子,仍然可能容易受到 SQL 注入的攻击!
-
@WouterH:即使使用mysqli_real_escape_string? php.net/manual/en/mysqli.real-escape-string.php
-
mysqli_query NOT 返回 null。要么你得到一个语句句柄,要么得到一个布尔值 false,如果有一个失败。
-
如果您使用SQL placeholders 和
bind_param,则不需要直接使用转义函数。不要使用字符串连接来组合查询。你最终会让自己陷入困境。