我有2个不同名称的下拉列表,我试图只在一个字段中查询。
我正在使用jQuery函数,其中如果选择item 1
,将显示下拉列表1,如果选择item 2
,将显示下拉列表2
这是我从mysql数据库和表中填充我的下拉列表的方法:
<div id="minquep">
<label>Branch</label>
<SELECT name="user_min">
<OPTION VALUE="0">Choose a branch
<?=$minq_options?>
</SELECT>
</div>
<div id="albury">
<label>Branch</label>
<SELECT name="user_branch">
<OPTION VALUE="0">Choose a branch
<?=$al_options?>
</SELECT>
这就是我通过填写带有下拉列表的表单将查询插入到mysql中的方法:
if (isset($_REQUEST['Submit'])) {
$sql = "INSERT INTO $db_table(branch) values ('".mysql_real_escape_string(stripslashes($_REQUEST['user_branch'])).",".mysql_real_escape_string(stripslashes($_REQUEST['user_min']))."')";
if($_REQUEST['user_branch']= ""){
($_REQUEST['user_branch']) = NULL;
}
if($result = mysql_query($sql ,$db)) {
echo '<script type="text/javascript">alert("The user has been added successfully!\n");return true;</script>';
echo "<meta http-equiv=\"refresh\" content=\"0;URL=add_user.php\">";
}
else {
echo "ERROR: ".mysql_error();
}
}
测试场景是,我选择<select name="user_min">
下的值。
所以我假设sql会绕过user_branch
的结果,因为它是null。但它在插入查询后会打印'0'。例如,如果插入的($_REQUEST['user_min'])
值为“Brisbane”且($ _REQUEST ['user_branch'])值为null
(因为我未在user_branch
下选择任何值下拉列表),分支字段应该成为“布里斯班”,知道user_branch
是NULL
。但它确实用 0 打印“BRISBANE”,就像我的mysql表中的 0,Brisbane 一样。
我该如何解决这个问题?
我已经尝试过设置if
条件,但它没有用。
if($_REQUEST['user_branch']= ""){
($_REQUEST['user_branch']) = NULL;
}
我也尝试将 user_min 更改为同名user_branch
,但它没有获得所选的值,而不是布里斯班它只是打印< EM> '0'
答案 0 :(得分:4)
一些事情 -
您在$ sql后设置user_branch = NULL。
您正在使用价值附近的报价。这是很好的非空值 - 你需要检查是否有NULL值,然后不要在你的$ sql中使用引号。
您在IF语句中使用单个“=”。这是你的If语句失败。将其更改为if($var == '')
<强>更新
基于您现有代码的一些建议 - 但是还有其他最佳实践可以实现您想要实现的目标....
$user_branch = $_REQUEST['user_branch'];
$user_min = $_REQUEST['user_min'];
//you should validate above values first
if$user_branch == "" || $user_min == "") {
$db_value = "NULL";
} else
{
$db_value = "'".mysql_real_escape_string(stripslashes($user_branch.','.$user_min))."'";
}
$sql = "INSERT INTO $db_table(branch) values (".$db_value.")";
答案 1 :(得分:0)
如果您不想要0,请更改:
<option value="0">Chose a Branch</option>
要:
<option value="">Chose a Branch</option>
否则,它将作为0
此外,您的PHP代码将无法正常工作:
if (isset($_REQUEST['Submit'])) {
// do this before the query
if($_REQUEST['user_branch']== ""){ // note the extra = in there, so you aren't assigning the variable, you are compairing
$_REQUEST['user_branch'] = NULL; // no need for brackets round the variable
}
$sql = "INSERT INTO $db_table(branch) values (".mysql_real_escape_string(stripslashes($_REQUEST['user_branch'])).",".mysql_real_escape_string(stripslashes($_REQUEST['user_min'])).")"; // you had single quotes around everything inside the VALUES() function
if($result = mysql_query($sql ,$db)) {
echo '<script type="text/javascript">alert("The user has been added successfully!\n");return true;</script>';
echo "<meta http-equiv=\"refresh\" content=\"0;URL=add_user.php\">";
}
else {
echo "ERROR: ".mysql_error();
}
}
答案 2 :(得分:-1)
$sql = "INSERT INTO reg(Name ,Email) values ('".mysql_real_escape_string(stripslashes($_REQUEST['Name']))."','".mysql_real_escape_string(stripslashes($_REQUEST['Email']))."')";
这是我的代码。在这里,我发现了未定义索引的错误。