我的更新查询有什么问题?

时间:2013-10-17 08:30:21

标签: php mysql sql sql-update

我遇到了MySQL更新查询的问题,它说成功但实际上并没有更新数据库记录。

require_once('auth.php');

$host="localhost"; // Host name 
$username="root"; // Mysql username
$password="sysadmin"; // Mysql password 
$db_name="Elite"; // Database name 
$tbl_name="Triage"; // Table name 

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$Reference=$_GET['Reference'];

$sql="UPDATE Triage SET directly='$directly' WHERE Reference='$Reference'";
$result=mysql_query($sql);

if($result){
echo "Successful";
echo "<BR>";
echo "<a href='list_records.php'>View result</a>";
}
else {
echo "ERROR";
}

2 个答案:

答案 0 :(得分:2)

您没有定义$directly,因此directly字段将使用空字符串进行更新。请注意,如果字段未更改(即它已经是空字符串)并且没有发生错误,mysql_query()仍将返回true

如果在上一页上定义了$directly,则它不会自动保留到其他页面。您必须将其保留在$_SESSION或其他媒体中,或将其作为$_GET$_POST变量传递。


附注:mysql_*已弃用,您的代码易受SQL注入攻击。考虑使用Prepared Statement和绑定参数升级到PDO或MySQLi。

答案 1 :(得分:1)

在编写任何查询时,首先应检查是否定义了变量:

if(isset($directly) && isset($Reference)){
  $sql="UPDATE Triage SET directly='$directly' WHERE Reference='$Reference'";
  $result=mysql_query($sql);
}

从php5.5.0开始,mysql_ *扩展名为deprecated,而应使用MySQLiPDO_MySQL扩展名。