我将日值插入数据库,我希望验证,如果这一天已经存在它应该说已经存在,否则它应该是无数...请任何人都可以检查以下代码...提前感谢
$dexist=$_POST['ext'];
$res=mysql_query("select Day from mess where Day='".$dexist."' ");
while($row=mysql_fetch_array($res))
{
$dy=$row['Day'];
}
if($dy==$dexist)
{
echo "<script language=\"javascript\">";
echo "window.alert ('File already exist');";
echo "//--></script>";
}
else
{
mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')");
}
答案 0 :(得分:0)
你的脚本尖叫“SQL INJECTION!”请pwn我的网站!
另外:您的代码容易受到同步问题的影响。例如,在运行select语句之后可能会创建一个文件,但是在运行INSERT语句之前。这将导致奇怪的失败。这就是为什么你应该将“select and insert”作为单个存储过程进行读取(读取原子操作 - 更具体地说,这是“比较和交换”的实例)。
答案 1 :(得分:0)
答案 2 :(得分:0)
不要在PHP中这样做,很难(不可能?)安全地做。通过在Day
列上添加唯一索引在MySQL中执行此操作:
ALTER TABLE mess ADD UNIQUE (Day);
然后,您可以通过从MySQL查找ER_DUP_UNIQUE
来捕获此类故障。
使用PHP的mysql_errno
检查错误1169以捕获唯一约束失败。
$query_result = mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')");
// 1169 means a unique constraint failure
if (!$query_result && mysql_errno() == 1169) {
echo "Oh noes, you tried to insert a value twice!";
}
答案 3 :(得分:0)
首先,永远不要将未经检查的POST / GET数据传递给MySQL查询,这是一个巨大的安全漏洞。请改用mysql_real_escape_string
:
$res=mysql_query("select Day from mess where Day='" . mysql_real_escape_string($dexist) . "' ");
类似于后者的电话。
其次,目前尚不清楚你在问什么......请告诉我们代码是否在某处工作,以及你得到的任何错误。我认为你对这一行有疑问:
if(file_exists($dy==$dexist))
这是将布尔值($dy==$dexist
将评估为true或false)传递到file_exists
函数。你需要传递文件名。