如果Null不起作用,则为SQL Update文本值

时间:2014-09-30 08:11:51

标签: php sql

我试图使它只能设置一次特定值,通过使它只能更新或设置,如果它等于null。出于某种原因,即使价值等于:"史蒂夫",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);
?>

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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