我正试图使它使特定值只能设置一次,方法是使它使我只能在等于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?