0

我有 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因为它是空的。但它确实在插入查询之后打印了“0” 。例如,如果插入的($_REQUEST['user_min'])值为“布里斯班”并且 ($_REQUEST['user_branch']) 值为null(因为我没有在user_branch下拉列表下选择任何值),则分支字段应该只是变成“布里斯班” ,知道user_branchNULL。但它确实在我的 mysql 表中使用0打印“BRISBANE” ,例如0, Brisbane 。

我怎样才能解决这个问题?

我已经尝试过设置if条件,但它不起作用。

if($_REQUEST['user_branch']= ""){

        ($_REQUEST['user_branch']) = NULL;
    }

我也尝试将user_min更改为 same name user_branch,但它没有获得选定的值,而不是Brisbane它只打印'0'

4

3 回答 3

5

一些东西 -

  1. 您在 $sql 之后设置 user_branch = NULL。

  2. 您在价值周围使用引号。非 Null 值很好——您需要检查是否有 NULL 值,然后不要在 $sql 中使用引号。

  3. 您在 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.")";
于 2012-08-07T14:35:01.627 回答
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(); 
  } 
}
于 2012-08-07T14:36:55.653 回答
-1
$sql = "INSERT INTO reg(Name ,Email) values ('".mysql_real_escape_string(stripslashes($_REQUEST['Name']))."','".mysql_real_escape_string(stripslashes($_REQUEST['Email']))."')";

这是我的代码。在这里我发现了未定义索引的错误。

于 2012-12-23T12:50:11.420 回答