我一直遇到这个存储过程的问题。我正在使用PHP和MySQL构建一个网站作为数据库。我正在使用XAMPP框架,它提供phpMyAdmin作为管理数据库的工具。在检查所有字段的长度至少为1个字符后,该过程尝试更新表中的行。这是代码:
DELIMITER //
CREATE PROCEDURE `modificaFornitore`(in idf varchar(10), in nm text, in ind text, in oldidf varchar(10))
BEGIN
IF (CHAR_LENGTH(idf) > 0 AND CHAR_LENGTH(nm) > 0 AND CHAR_LENGTH(ind) > 0) THEN
UPDATE fornitori SET IDF = idf, Nome = nm, Indirizzo = ind WHERE IDF = oldidf;
ELSE insert into nonexistingtable values('valore1', 'valore2');
END IF;
END; //
DELIMITER ;
这里是调用过程的PHP代码:
$querymodifica = "call modificaFornitore('" . $_POST['idf'] . "', '" . $_POST['nome'] . "', '" . $_POST['indirizzo'] . "', '" . $_POST['vecchioid'] . "')";
if(mysqli_query($dblink, $querymodifica))
{
$_SESSION['editfornok'] = 1;
header("Location: adminfornitori.php?show=4");
}
else
{
$_SESSION['editfornok'] = 0;
header("Location: adminfornitori.php?show=4");
}
在过程中的else语句下插入的目的是在if语句失败的情况下引发错误,以便PHP捕获错误。我一直在其他程序中使用这个“技巧”,它工作正常,所以我觉得这不是问题。无论如何,即使没有它,它也不会起作用。
如果有人得到一些建议,我会非常高兴的! 非常感谢。