MYSQL Prepared Statement没有表现

时间:2015-02-03 01:43:55

标签: php mysql

我很难过!!

我有一个准备好的声明,里面有变量......

    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时不会创建新记录。这些变量似乎有效,因为它会输入新的记录。

我的语法是否正确?我是以正确的方式去做的吗?我提供了足够的信息吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

感谢关于变量和列名称的Hobo Sapiens建议相同,它已得到解决。我将准备好的语句STKEY变量更改为STUKEY,它的行为与我预期的一样。