在 Mysql 和 PHP 中空值变为 0

xir*_*epe 0 php mysql

我有 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> 
Run Code Online (Sandbox Code Playgroud)

这就是我通过填写带有下拉列表的表单将查询插入 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(); 
} 
}
Run Code Online (Sandbox Code Playgroud)

测试场景是,我选择了下的值<select name="user_min">。所以我假设 sql 会绕过结果,user_branch因为它是空的。但它确实在插入查询之后打印'0'。例如,如果插入的($_REQUEST['user_min'])值是“Brisbane”,而 ($_REQUEST['user_branch']) 值是null(因为我没有在user_branch下拉列表下选择任何值),那么分支字段应该变成“Brisbane” ,知道user_branch是NULL。但它确实在我的 mysql 表中用0打印“BRISBANE” ,比如0, Brisbane。

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

我已经尝试过设置if条件,但没有用。

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

        ($_REQUEST['user_branch']) = NULL;
    }
Run Code Online (Sandbox Code Playgroud)

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

Tig*_*ger 5

一些东西 -

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

  2. 您在价值周围使用引号。非空值很好 - 您需要检查是否有空值,然后不要在 $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.")";
Run Code Online (Sandbox Code Playgroud)