gpt4 book ai didi

MySQL 使用 Bind_Param 和 ON DUPLICATE KEY

转载 作者:行者123 更新时间:2023-11-29 10:53:20 25 4
gpt4 key购买 nike

我有一个名为 test_favorites 的表,用户可以在其中添加一些内容到收藏夹。我使用这个SQL函数,但出现此错误:

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);

我不知道解决该错误是否可以解决我的问题。因为在我的表 test_favorites 中,列 WhatOIdUserId 是唯一的。在 Value 列中,我已将默认值指定为 1。但我正在尝试创建一个 SQL,检查 WhatOIdUserId 已存在,如果存在,则脚本应将 value 中的值乘以 (-1)。这样 Value 在 1 和 -1 之间切换。如果不存在,则应在 value 列中打印默认值。

我的SQL语句写错了吗?

编辑经过一些 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);

我似乎更接近了,但它仍然没有更新,只是向表中添加了一个新行。

最佳答案

嗯,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);

因此,在您的情况下 - 您可以更新表中的任何字段,但可以对您实际插入的三个字段使用值 SQL 函数

关于MySQL 使用 Bind_Param 和 ON DUPLICATE KEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43385692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com