我收到以下错误: 致命错误:在第28行的C:\ xampp \ htdocs \ cpwmytable.php中调用boolean上的成员函数bind_param()
我在整个代码中都看了一遍,无法弄明白。你能帮忙吗?
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$eMail = trim($_POST['uemail']);
$currentPass = trim($_POST['currentpw']);
$pwChange = trim($_POST['newpw']);
$pwConfirm = trim($_POST['confirmpw']);
if (!empty($eMail) && !empty($currentPass) && !empty($pwChange) && !empty($pwConfirm) ) {
include("mytableconn.php");
$user = $conn->prepare("
SELECT id, u_email, p_code FROM theusers WHERE u_email = ?
");
$user->bind_param("s", $eMail);
$user->execute();
$user->bind_result($theid, $theEmail, $thePassword);
$user->fetch();
if (($theEmail == $eMail) && ($thePassword == $currentPass)) {
$updates = $conn->prepare("
UPDATE theusers
SET u_email=?,p_code=?
WHERE id=?
");
$updates->bind_param("ssi", $eMail, $pwChange, $theid);
$updates->execute();
echo ("thanks");
$cookiename = "chococookie";
$cookievalue = "100";
$cookieexpire = time() * (60*60*24*7);
setcookie($cookiename, $cookievalue, $cookieexpire);
}else {
echo("No record found");
}
}else {
echo("Please fill out all required fields");
}
} else {
echo("error");
}
?>
答案 0 :(得分:0)
prepare方法可以返回false。
使用类似$ conn-&gt; error_list的内容来检查解析SQL时发生的错误。
答案 1 :(得分:0)
您可能应该将MySQLi配置为抛出异常而不是那些无提示错误。这可以使用这一行来完成:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
这样你就可以避免这些问题。
答案 2 :(得分:0)
错误来自声明:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<button id="add2List">add to list</button>
<select id="slcProduct">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div id="theList"></div>
分配给$updates = $conn->prepare("
UPDATE theusers
SET u_email=?,p_code=?
WHERE id=?
");
的值可以是布尔值或对象,它在成功时返回一个对象,如果发生错误则返回false。
http://php.net/manual/en/mysqli.prepare.php
因此,您应该这样检查:
$updates
错误可能来自于表格的拼写错误或列名等简单的内容。
您可以使用http://php.net/manual/en/mysqli.error-list.php检查可能的错误,但我认为最简单的方法是将您尝试运行的SQL复制并粘贴到控制台或phpMyAdmin进行测试,以确保其有效