我正在尝试为表单创建验证。当用户填写表单时,它应该运行一组查询。第一种是检查表中是否已存在记录。如果确实存在,那么它不需要运行接下来的2个查询,即INSERT和UPDATE。
我不确定我做错了什么,但桌子上已经有了记录。检查表后,它仍然运行INSERT和UPDATE查询。他们不应该开枪。它不应该做任何事情。
这是我的代码: *我正在从for循环开始我的代码,它只是取一个用户手动选择的BOL数字和CONTAINER数字的数组。我爆炸了阵列,但我不会显示该代码,因为我认为在这种情况下不需要显示*
<?php
for($i = 0; $i < $count; $i++)
{
$bolService = $bolArray[$i];
$conService = $conArray[$i];
$checkService = "SELECT * FROM import_service WHERE bol = '" . $bolService . "' AND container = '" . $conService . "'";
$checkSerRes = mysql_query($checkService);
$checkSerNum = mysql_num_rows($checkSerRes);
if($checkSerNum > 0)
{
$successService = false;
}
elseif($checkSerNum = 0)
{
$sql_query_string = mysql_query
("INSERT INTO import_service (bol, container) VALUES ('$bolService','$conService')");
$updateService = mysql_query ("UPDATE import_dispatch_details SET SERVICE = 'Y'
WHERE BOL_NUMBER = '$bolService' AND CONTAINER = '$conService')");
$successService = true;
}
}
// javascript fires an ALERT message in this next set of code
if($successService = true)
{
echo ("<script language='javascript'>
window.alert('Record has been saved')
window.location.href=''
</script>");
}
// if checkSerNum > 0, then it should skip the INSERT and UPDATE and fire the code below
elseif($successService = false)
{
echo ("<script language='javascript'>
window.alert('There was an error saving the record')
window.location.href=''
</script>");
}
?>
我不确定为什么这不能正常工作。我需要这个验证才能工作。我确信有另一种方法,但这就是我得到的。
请帮我完成这项工作。
提前谢谢。
答案 0 :(得分:5)
此elseif($checkSerNum = 0)
必须为elseif($checkSerNum == 0)
你现在正在进行任务而不是比较。
包括if($successService = true)
和elseif($successService = false)
,请添加另一个=
符号。
将错误报告添加到文件顶部,这将有助于生产测试。
error_reporting(E_ALL);
ini_set('display_errors', 1);
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。
答案 1 :(得分:0)
这不是很有效(你从你的桌子中选择*
,你没有使用 - 浪费内存?)。为什么不做这样的事情:
for ($i = 0; $i < $count; $i++)
{
$bolService = $bolArray[$i];
$conService = $conArray[$i];
$recordExists = false;
$result = mysql_query("SELECT COUNT(*) AS recordCount FROM import_service WHERE bol = '" . $bolService . "' AND container = '" . $conService . "'");
if ($result) {
$row = mysql_fetch_assoc($result);
$recordExists = ($row['recordCount'] >= 1);
}
if ($recordExists)
{
$successService = false;
}
else
{
$sql_query_string = mysql_query
("INSERT INTO import_service (bol, container) VALUES ('$bolService','$conService')");
$updateService = mysql_query
("UPDATE import_dispatch_details SET SERVICE = 'Y'
WHERE BOL_NUMBER = '$bolService' AND CONTAINER = '$conService')");
$successService = true;
}
}
P.S。 mysql_*
已正式弃用。请使用PDO
或MySQLi
。此外,您的代码可能会向SQL Injection开放。