MySQL 使用 Bind_Param 和 ON DUPLICATE KEY
MySQL using Bind_Param and ON DUPLICATE KEY
我有一个名为 test_favorites
的 table,用户可以在其中将内容添加到收藏夹。我用这个 SQL-function
,
但出现此错误:
call to a member function bind_param()
on boolean in line (bind_param-line)
$sql = $conn->prepare("INSERT INTO `test_favorites` (`What`, `OId`, `UserId`) VALUES (?,?,?) ON DUPLICATE KEY UPDATE Values(`Value`)=Values(`Value`)*(-1);");
$sql->bind_param('sis',$posttype, $postid , $sessionuserid);
不知道解决错误是否解决了我的问题。因为在我的 table test_favorites
中,列 What
、OId
和 UserId
是唯一的。在 Value
列中,我已将默认值分配给 1。但我正在尝试创建一个 SQL,它正在检查 What
、OId
和 UserId
已经存在,如果存在,则脚本应将 value
中的值乘以 (-1)。所以这样 Value
在 1 和 -1 之间切换。如果它不存在,那么默认值应该打印在列 value
中。
我写的 SQL 句子错了吗?
编辑
在 som starthelp 之后我现在使用这个代码:
$sql = $conn->prepare("INSERT INTO `test_favorites` (`What`, `OId`, `UserId`, `Value`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE Value=values(Value)*(-1);");
$sql->bind_param('sisi',$posttype, $postid,$sessionuserid,$one);
我似乎更接近了,但它仍然没有更新,只是在 table.
中添加了一个新行
嗯,ON DUPLICATE KEY UPDATE
的有效语法是
INSERT INTO `test_favorites` (`What`, `OId`, `UserId`) VALUES (?,?,?) ON DUPLICATE KEY UPDATE userId = values(userId) * -1, anyotherfield = values(What) + values(OId);
因此在您的情况下 - 您可以更新 table 中的任何字段,但可以对您实际插入的三个字段使用值 SQL 函数
我有一个名为 test_favorites
的 table,用户可以在其中将内容添加到收藏夹。我用这个 SQL-function
,
但出现此错误:
call to a member function
bind_param()
on boolean in line (bind_param-line)
$sql = $conn->prepare("INSERT INTO `test_favorites` (`What`, `OId`, `UserId`) VALUES (?,?,?) ON DUPLICATE KEY UPDATE Values(`Value`)=Values(`Value`)*(-1);");
$sql->bind_param('sis',$posttype, $postid , $sessionuserid);
不知道解决错误是否解决了我的问题。因为在我的 table test_favorites
中,列 What
、OId
和 UserId
是唯一的。在 Value
列中,我已将默认值分配给 1。但我正在尝试创建一个 SQL,它正在检查 What
、OId
和 UserId
已经存在,如果存在,则脚本应将 value
中的值乘以 (-1)。所以这样 Value
在 1 和 -1 之间切换。如果它不存在,那么默认值应该打印在列 value
中。
我写的 SQL 句子错了吗?
编辑 在 som starthelp 之后我现在使用这个代码:
$sql = $conn->prepare("INSERT INTO `test_favorites` (`What`, `OId`, `UserId`, `Value`) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE Value=values(Value)*(-1);");
$sql->bind_param('sisi',$posttype, $postid,$sessionuserid,$one);
我似乎更接近了,但它仍然没有更新,只是在 table.
中添加了一个新行嗯,ON DUPLICATE KEY UPDATE
的有效语法是
INSERT INTO `test_favorites` (`What`, `OId`, `UserId`) VALUES (?,?,?) ON DUPLICATE KEY UPDATE userId = values(userId) * -1, anyotherfield = values(What) + values(OId);
因此在您的情况下 - 您可以更新 table 中的任何字段,但可以对您实际插入的三个字段使用值 SQL 函数