SQL语句更新记录不起作用

时间:2015-05-14 22:09:22

标签: php mysqli

此SQL语句适用于PHPMyAdmin,但不适用于我的网站:

$sql = mysqli_query($con,
"UPDATE details INNER JOIN date ON date.dateID = details.dateID
SET details.year = '$year', details.description = '$description', details.dateID = '$decade'
WHERE id='$recordID';")
or die('Query error. try again: '.mysqli_error());  

虽然当我用以下代码替换它时,这个SQL语句有效。

$sql = mysqli_query($con, "UPDATE details SET year = '$year', description = '$description' WHERE id='$recordID'") or die('Query error. try again: '.mysqli_error());

这里发生了什么?为什么第一个代码没有更新我的记录?

网址正在接收新值,但它不会更新我的数据库。

3 个答案:

答案 0 :(得分:1)

虽然您可以在一个UPDATE query中更新多个表,但使用INNER JOIN语法不正确。看起来您只需更新1张表details,因此您不需要INNER JOIN date ON date.dateID = details.dateID

答案 1 :(得分:0)

如果以这种方式重写查询......

UPDATE details A, date B SET
    A.year = '$year'
    , A.description = '$description'
    , A.dateID = '$decade'
WHERE A.dateID = B.dateID
    AND A.id = '$recordID'

...您可以看到您实际上正在更新您要加入的值,这将无效。我不知道你想要完成什么,我不能告诉你更多。

答案 2 :(得分:0)

我相信这应该做到。

UPDATE details
SET details.year = '$year', details.description = '$description', details.dateID = '$decade'
FROM details 
INNER JOIN date ON date.dateID = details.dateID
WHERE <tableName>.id='$recordID'