mysql)时出现错误1366

1cklez4t  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(358)

我正在编写一个sript,让我的站点的用户更改数据库中存储的一些基本信息。
我为它编写了一个存储过程,我想用php脚本调用它。当我这么做的时候,我得到了这个错误:
致命错误:未捕获的pdoexception:sqlstate[hy000]:常规错误:1366整数值不正确:c:\inetpub\portale\php\update\u user中第1行“cod\utente”列的“domenico”。php:37 stack 跟踪:#0 c:\inetpub\portale\php\update_user.php(37):pdostatement->execute()#1{main}在第37行的c:\inetpub\portale_ets\php\update_user.php中抛出
代码是表的主键,整数,自动递增。你能帮我找到问题吗?代码如下:

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();
cbjzeqam

cbjzeqam1#

您正在存储一个字符串值 $_SESSION['Cod_Utente'] ,确保该值是有效的整数,然后将其传递给存储过程。

$f = $_SESSION['Cod_Utente'];

错误显示你有文本 'Domenico' 而不是整数值。

相关问题