我有一個查詢來更新數據,如果它存在或插入新記錄。查詢也運行在for循環中:插入/更新mysql記錄查詢錯誤
$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;
我通過在PHP腳本中執行某些計算來獲取變量值。
這些查詢有些錯誤。在回顯上述sql查詢時,也會打印此數據。
IF 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')
爲什麼我的查詢錯誤?我甚至嘗試過:
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')
...但它仍然不起作用。我哪裏出錯了?
但這並沒有看起來像你做任何[SQL逃逸(http://bobby-tables.com/php)在一切都在這裏,可能有一些嚴重[SQL注入漏洞]。 [PDO不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/),並提供了一個簡單,可靠向查詢添加數據的方式。像[PHP The Right Way](http://www.phptherightway.com/)這樣的指南概述了與數據庫連接時推薦的最佳實踐。 – tadman
從[文檔](http://dev.mysql.com/doc/refman/5.6/en/if.html):「用於**存儲程序的'IF'語句**實現基本的條件構造。」這不是可以用於一般查詢的東西。 – tadman