Php Mysqli更新准备失败

Php Mysqli更新准备失败,php,mysqli,Php,Mysqli,当执行上述update语句时,它将使用值而不是WHERE子句更新所有行。知道为什么会这样吗 谢谢 bind param的types字符串的最后一个值(第一个参数(“ssss”)是整数的“i”,但您将其与可能是字符串的“username”进行比较 我猜您传递的值被转换为0,并且将0与MySQL中的任何字符串进行比较总是正确的(请参阅) 尝试将“SSSSSSSSSSSI”中的最后一个“i”改为“s”(读起来非常糟糕,因此非常容易出错。)用户名的值是多少?其中用户名=$username否变量的值是多少

当执行上述update语句时,它将使用值而不是WHERE子句更新所有行。知道为什么会这样吗


谢谢

bind param的types字符串的最后一个值(第一个参数(“ssss”)是整数的“i”,但您将其与可能是字符串的“username”进行比较

我猜您传递的值被转换为0,并且将0与MySQL中的任何字符串进行比较总是正确的(请参阅)


尝试将“SSSSSSSSSSSI”中的最后一个“i”改为“s”(读起来非常糟糕,因此非常容易出错。)

用户名的值是多少?其中用户名=$username否变量的值是多少?即,
echo$username;
的输出是什么?最后一个参数(用户名)使用的是
I
bind_param
中,它似乎不正确。请尝试替换为
s
。这将是登录用户的会话值。是的,它已被排序。是否有更好的方法写入绑定参数?我宁愿切换到并使用以类型作为第三个参数的方法。
 if ($stmt = $mysqli->prepare("UPDATE profile SET fullname =?, guardian =?,   
 addressline1 = ?, addressline2 = ?, city = ?, stateid = ?, pin = ?, birthdate = ?, 
 bloodgroup= ?, allergydetails= ?, pancardno= ?, officephone= ?, residencephone= ?, 
 mobilephone= ?, drivinglicensenumber= ?, drivinglicensevalidupto= ?, 
 fmscidrivinglicensenumber= ?, fmscientrantlicensenumber= ?, vehiclemake= ?, 
 vehiclemodel= ?, vehiclenumber= ?, vehicleyear= ?, emergencyname= ?, 
 emergencyaddress1= ?, emergencyaddress2= ?,emergencylandphone= ?,  
 emergencymobilephone= ?, isprofilecomplete = ?  WHERE username = ?"))
{
$stmt->bind_param('sssssississsssssssssssssssssi', $fullname, $sodowo, 
addressline1,     $addressline2, $city, $stateid, $pin, $birthdate, $bloodgroup, 
$allergydetails, $pancardno, $officephone, $residencephone, $mobilephone,  
$drivinglicensenumber, $drivinglicensevalidupto, $fmscidrivinglicensenumber,    
$fmscientrantlicensenumber, $vehiclemake, $vehiclemodel, $vehiclenumber, $vehicleyear, 
$emergencyname, $emergencyaddress1, $emergencyaddress2, $emergencylandphone, 
 $emergencymobilephone, $isprofilecomplete , $username );
 $stmt->execute();
 $stmt->close();

 }