我正在写一个sript,让我的网站的用户更改存储在数据库中的一些基本信息。
我为它写了一个存储过程,我想用php脚本调用它。当我这样做的时候,我得到了这个错误:
致命错误:未捕获PDOException: SQLSTATEHY000:常规错误: 1366不正确的整数值: C:\inetpub\Portale\php\update_user.php:37堆栈跟踪中第1行的列'Cod_Utente‘的'Domenico’:#0 C:\inetpub\Portale\php\update_user.php( 37 ):PDOStatement->execute() #1 {main}在C:\inetpub\Portale_ETS\php\update_user.php的第37行引发
Cod_Utente是表的主键,integer,自动增量。你能帮我找出这个问题吗?代码如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_user`(
IN v_Nome_UT VARCHAR(25),
IN v_Cog_UT VARCHAR(25),
IN v_Data_Iscrizione VARCHAR(45),
IN v_Mail_UT VARCHAR(45),
IN v_Tel_UT VARCHAR(45),
IN Cod_Utente int
)
BEGIN
update tab01_utenti
set
Nome_UT=v_Nome_UT,
Cog_UT=v_Cog_UT,
Data_Iscrizione=v_Data_Iscrizione,
Mail_UT=v_Mail_UT,
Tel_UT=v_Tel_UT
where
Cod_Utente=v_Cod_Utente;
commit;
END
Php脚本(省略了db连接,但没问题):
$a = $_POST["nome"];
$b = $_POST["cognome"];
$c = $_POST["mail"];
$d = $_POST["data"];
$e = $_POST["tel"];
$f = $_SESSION['Cod_Utente'];
// execute the stored procedure
$sql = "CALL update_user(:v_Nome_UT, :v_Cog_UT, :v_Mail_UT,
:v_Data_Iscrizione, :v_Tel_UT, :v_Cod_Utente)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':v_Nome_UT', $a, PDO::PARAM_STR);
$stmt->bindParam(':v_Cog_UT', $b, PDO::PARAM_STR);
$stmt->bindParam(':v_Data_Iscrizione', $d, PDO::PARAM_STR);
$stmt->bindParam(':v_Mail_UT', $c, PDO::PARAM_STR);
$stmt->bindParam(':v_Tel_UT', $e, PDO::PARAM_STR);
$stmt->bindParam(':v_Cod_Utente', $f, PDO::PARAM_INT);
$stmt->execute();
发布于 2018-06-07 08:16:13
您正在$_SESSION['Cod_Utente']
上存储字符串值,请确保该值是有效整数,然后再将其传递给存储过程。
$f = $_SESSION['Cod_Utente'];
错误提示您的文本是'Domenico'
,而不是整数值。
https://stackoverflow.com/questions/50681817
复制相似问题