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