[英]MYSQL Prepared Statement not behaving
我很沮喪!
我有一個准備好的帶有變量的語句...
DELIMITER $$
create procedure select_or_insert(
IN unit VARCHAR(255),
IN STKEY VARCHAR(255),
IN mark INT(2))
begin
IF EXISTS (select * from studentmarks where STKEY = STKEY and unitcode = unit) THEN
UPDATE studentmarks SET unitmark = mark where unitcode = unit and STKEY = STKEY;
ELSE
INSERT INTO studentmarks (STKEY,unitcode,unitmark)
VALUES (STKEY,unit,mark);
END IF;
end
稱它為...
foreach ($_POST as $unit=>$mark){
if (!mysqli_query($con,"CALL select_or_insert('$unit','$STKEY','$mark')")) {
die('Error: ' . mysqli_error($con));
}
}
應該發生什么(或我打算發生的事情)是...如果不存在,請輸入新記錄,如果存在,請進行更新。
該語句的行為是:當表為空時,它將創建一個新記錄。 填充時它將更新記錄,但僅更新現有記錄。 更改STKEY時不會創建新記錄。 變量似乎起作用,因為它將輸入新記錄。
我的語法正確嗎? 我會以正確的方式進行操作嗎? 我提供了足夠的信息嗎?
提前致謝。
感謝Hobo Sapiens關於變量和列名相同的建議,此問題得以解決。 我將准備好的語句STKEY變量更改為STUKEY,它的行為與我預期的一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.