我们有一个桌子车和一个简单的PHP表格。在插入数据之前,我要检查车辆登记号是否存在,但是某些客户端PC可能会输入重复的条目。下面是代码片段。还有什么可能导致这种情况?
$vehicleRegistrationNumber=$_POST['vehicleRegistrationNumber'];
$selectQuery1 ="Select vehicleRegistrationNumber From Vehicle Where vehicleRegistrationNumber='".$vehicleRegistrationNumber."'";
$result1 = mysqli_query($link,$selectQuery1);
$row1 = mysqli_fetch_array($result1, MYSQL_ASSOC);
$n1 = mysqli_num_rows($result1);
if($n1 > 0) {
$status="<span class=\"statusFailed\">: Vehicle ".$vehicleRegistrationNumber." Already Exist.</span>";
}
else {
//insert codes
}
最佳答案
首先,您的代码容易受到SQL注入的攻击。可以通过提交类似XYZ0001' AND 1='0
或更多恶意值的方法来绕过此检查。为避免这种情况,请使用准备好的语句和参数绑定而不是字符串连接。
其他可能性仅仅是用户错误,例如,在DB的第一眼广告记录中很难发现尾随空格("XYZ001" != "XYZ0001 "
)。在检查其在数据库中的存在之前,您应该与PHP一起检查提交的值是否仅包含允许的字符并且没有常见错误。
关于php - 如何避免通过php向mysql重复输入数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17241629/