试图将“插入和更新”查询转换为mysqli

时间:2015-10-10 20:45:50

标签: mysql mysqli insert-update

我有这个 mysql 句子在同一个查询中使用插入和更新:

if(mysql_query('insert into forum_topics (parent, id, id2, title, message, authorid, timestamp, timestamp2) select "'.$dn1['parent'].'", "'.$id.'", max(id2)+1, "", "'.$message.'", "'.$_SESSION['SESS_MEMBER_ID'].'", "'.time().'", "'.time().'" from forum_topics where id="'.$id.'"') and mysqli_query('update forum_topics set timestamp2="'.time().'" where id="'.$id.'" and id2=1'))

我试图以这种方式转换为 mysqli

$qry = 'insert into forum_topics (parent, id, id2, title, message, authorid, timestamp, timestamp2) select "'.$dn1['parent'].'", "'.$id.'", max(id2)+1, "", "'.$message.'", "'.$_SESSION['SESS_MEMBER_ID'].'", "'.time().'", "'.time().'" from forum_topics where id="'.$id.'"';
$qry2 = 'update forum_topics set timestamp2="'.time().'" where id="'.$id.'" and id2=1';
$dn3 = $link -> query($qry AND $qry2);

if (!$dn3)...

不幸的是,它似乎没有工作,因为我被抛出这个错误:

  

错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“1”附近使用正确的语法

有没有人可以帮忙解决这个问题?

问候

1 个答案:

答案 0 :(得分:1)

如果您想遵循原始逻辑,那么

$dn3 = ($link -> query($qry) AND $link->query($qry2));

由于php代码中的逻辑和运算符,2个查询字符串在提交给mysql之前在布尔操作中被解释。

结果,值1(true)被发送到mysql,这显然导致语法错误消息。