bind_param()错误,你能发现错误吗?

时间:2017-05-13 16:37:45

标签: php

我收到以下错误: 致命错误:在第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");  
}

?>

3 个答案:

答案 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进行测试,以确保其有效