SQL更新文本值(如果为Null)无效


SQL Update Text Value if Null not Working

我正试图使它使特定值只能设置一次,方法是使它使我只能在等于null时更新或设置。出于某种原因,即使值等于"Steve"这样的值,PHP仍然会获得成功。我做错了什么?

PHP:

<?php
$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL");
//select a database to work with
$selected = mysql_select_db("???????",$dbhandle) 
  or die("Could not select examples");
if(empty($_POST['OrderID']) || empty($_POST['UserName'])){
            echo 'Failed. Fill out all fields.';
        }
else{
        $sql = mysql_query("SELECT * FROM orders WHERE order_id = '".$_POST['OrderID']."' AND LENGTH(accepter_name)= 0");
        $row = mysql_fetch_row($sql); // get the single row.
        echo $row['accepter_name']; // display the value.    
        if($row['accepter_name']==''){ 
            $sql = mysql_query("UPDATE orders SET accepter_name= '".$_POST['UserName']."' WHERE order_id='".$_POST['OrderID']."'");
                    echo "Success";   
        }
        else{
        echo "Failed";
         }
}
mysql_close($dbhandle);
?>

当我检查数据库时,接受者名称值会发生更改。

您可以使用if( mysql_affected_rows($sql) == 1 ) instead of if($sql)因为sql是执行的,它不返回任何受影响的行。因此,如果您检查受影响的行,当您的sql更新了表中的至少一行时,它应该返回1

为什么不在where子句中使用IS NULL来检查accepter_name?