簡體   English   中英

MYSQL預准備語句不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM