$prepared = $db->prepare("
SET @content = ?;
CALL add_interest_if_not_exists( @content );
SET @iid = (SELECT interests_id
FROM interests
WHERE content = @content);
REPLACE INTO profile_interests (user_id, interests_id, likes)
VALUES (
?,
@iid,
?
)
");
echo $db->error;
错误是:
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'CALL add_interest_if_not_exists(@content)附近使用正确的语法; SET @iid =(在第3行选择我'
查询使用MySQL工作台(硬编码值)。为什么不在我准备好的声明中......
答案 0 :(得分:1)
这不是单个查询,而是一组查询。
因此,您必须逐个运行它们,每个都有单独的query()
或prepare()/execute()
来电。
答案 1 :(得分:0)
为什么不使用存储过程?
CREATE PROCEDURE add_user_interest(p_content varchar(200), p_user_id int,p_likes int)
BEGIN
CALL add_interest_if_not_exists( p_content );
SET @iid = (SELECT interests_id
FROM interests
WHERE content = p_content);
REPLACE INTO profile_interests (user_id, interests_id, likes)
VALUES (
p_user_id,
@iid,
p_likes
);
END
结束时,您将调用单个预备声明
$prepared = $db->prepare("CALL add_user_interest( ?, ? , ? )");