Php 插入/更新mysql记录查询错误

Php 插入/更新mysql记录查询错误,php,mysql,sql,Php,Mysql,Sql,我有一个查询来更新数据(如果数据存在)或插入新记录。查询也在for循环中运行: $pname = $c_info['name']; $cname = $model[$c_id]['name']; $iqs =" IF EXISTS (SELECT * FROM custom_question_details WHERE Quiz_id =$data[$i] and User_id=$user_id and Parent_Category='$pname' and Category_

我有一个查询来更新数据(如果数据存在)或插入新记录。查询也在for循环中运行:

  $pname = $c_info['name'];
  $cname = $model[$c_id]['name'];

$iqs =" IF EXISTS (SELECT * FROM custom_question_details WHERE Quiz_id 
=$data[$i] and User_id=$user_id and Parent_Category='$pname' and 
Category_Name='$cname' and Score=$temp )     
UPDATE custom_question_details SET Quiz_id =$data[$i],User_id=$user_id,
Parent_Category='$pname', Category_Name='$cname',Score=$temp
ELSE
insert into custom_question_details (User_id,Quiz_id,Parent_Category,Category_Name,Score) 
values  (".$user_id.",".$data[$i].",'".$c_info['name']."','".$model[$c_id]['name']."','".$temp."')";

echo "<br>".$iqs;
为什么我的问题是错误的?我甚至试过:

SELECT EXISTS (
SELECT * 
FROM custom_question_details
WHERE Quiz_id =7
AND User_id =3
AND Parent_Category =  'Default for System'
AND Category_Name =  'sample quiz question 1'
)UPDATE custom_question_details SET Quiz_id =7,User_id=3,
Parent_Category='Default for System',Category_Name='sample quiz question 1',Score='100' 
ELSE 
insert into custom_question_details     (User_id,Quiz_id,Parent_Category,Category_Name,Score) values(3,7,'Default for System','sample quiz question 1','100')

…但还是不行。哪里出错了?

首先,IF条件语法如下:

其次,我认为您缺少UPDATE方法的一些括号。 第三,我不确定在if条件下是否可以使用多个列。我需要再研究一下

也许你能告诉我们你收到的确切错误

希望有帮助,
丹尼斯·伦德勒(Denis Rendler)

PS:我强烈建议您研究PDO,并开始使用准备好的语句,这不仅是为了代码可见性,也是为了安全性;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法,第1行的“如果存在,请从自定义问题详细信息中选择*,其中测验id=7,用户id=3”,这是我在执行queryHello时遇到的错误。尝试将“选择”更改为仅使用1列。据我所知,您的查询无论如何只需要一列。看起来您在这里根本没有做任何事情,可能有一些严重的[SQL注入错误]。并提供了一种向查询中添加数据的简单、可靠的方法。类似这样的指南概述了与数据库接口时推荐的最佳实践。From:存储程序的IF语句实现了一个基本的条件构造。这不是一般查询中可以使用的东西。
SELECT EXISTS (
SELECT * 
FROM custom_question_details
WHERE Quiz_id =7
AND User_id =3
AND Parent_Category =  'Default for System'
AND Category_Name =  'sample quiz question 1'
)UPDATE custom_question_details SET Quiz_id =7,User_id=3,
Parent_Category='Default for System',Category_Name='sample quiz question 1',Score='100' 
ELSE 
insert into custom_question_details     (User_id,Quiz_id,Parent_Category,Category_Name,Score) values(3,7,'Default for System','sample quiz question 1','100')
IF EXISTS ([condition]) THEN [your code] ELSE [some other code]