2012-04-24 103 views
0

我有以下代码:MySQL的UPDATE语句没有更新相关的表

$query = "UPDATE jobs SET `ipt` = '$ipt', `prejobform` = '$prejobform', `fileddate` = '$fileddate' WHERE `job_id` = '$jobid'"; 

    $result = mysql_query($query); 


    if (!$result) { 
     //ERROR LOGGER HERE 
     echo mysql_error(); 
    } 
    else { 
     header('Location: view_job.php?jobid='.$jobid); 
    } 

此代码重定向就像是正确的行为,但是当我检查数据库,该领域尚未更新。我敢肯定,这个问题很简单,我错过了,但我无法找到问题所在。

+2

'$ ipt','$ prejobform','$ fileddate','$ jobid'的值是什么?查询后'mysql_affected_rows()'的结果是什么? – DaveRandom 2012-04-24 15:55:12

+2

如果在构造查询字符串后回显查询字符串,并查看是否有任何明显问题(如果没有看到它,请将其粘贴到此处),可能会有所帮助。 – rawb 2012-04-24 15:57:01

+0

尝试直接在MySQL上执行相同的查询,无论是从控制台还是客户端 - 如果您确定PHP代码已正确构建SQL。查询确实可能执行,但根据指定的值更新了0行。 – 2012-04-24 16:02:47

回答

0
  1. 对于UPDATE查询,mysql_query返回true,如果查询成功(被解析并正确执行),不仅是如果它真的没有更新任何行。

  2. 如果基础表为InnoDB并且您之前启动了事务,则查询将不会隐式提交事务,并且在您退出脚本或断开连接时它将回滚。