PHP/MySQLi查询;对非对象调用成员函数bind_param();

PHP/MySQLi查询;对非对象调用成员函数bind_param();,php,mysql,mysqli,Php,Mysql,Mysqli,这段代码成功地获取了所有发布的数据并将其存储在适当的变量中(我已经检查了所有变量),但是更新数据库中的信息会导致问题,我不知道为什么。这表示正在对非对象调用bind_param()。ID变量是在程序中较早设置的,包含正确的数据。我在想也许查询本身有问题 更新:当bind_param行被删除时,一切都正常工作,因此错误几乎肯定在该行中 if ($_SERVER["REQUEST_METHOD"] == "POST") // if the form has been submitted {

这段代码成功地获取了所有发布的数据并将其存储在适当的变量中(我已经检查了所有变量),但是更新数据库中的信息会导致问题,我不知道为什么。这表示正在对非对象调用bind_param()。ID变量是在程序中较早设置的,包含正确的数据。我在想也许查询本身有问题

更新:当bind_param行被删除时,一切都正常工作,因此错误几乎肯定在该行中

if ($_SERVER["REQUEST_METHOD"] == "POST") // if the form has been submitted
{


    $newusername = $_POST["newusername"]; // get new email
    $newemail = $_POST["newemail"]; // get new username
    $newabout = $_POST["newabout"];
    $newbooks = $_POST["newbooks"];
    $newauthors = $_POST["newauthors"];
    $newmovies = $_POST["newmovies"];
    $newtv = $_POST["newtv"];

    $success = true;


    if ($conn->connect_error) // if there's a problem connecting to the db send error message
    {
        die("Connection failed: " . $conn->connect_error);
        $success = false;
    }


    if ($success)
    {
        $statement = $conn->prepare("UPDATE Users SET Username = ?, Email = ?, About = ?, Books = ?, Authors = ?, Movies = ?, TV = ? WHERE ID = ?"); // prepare query
        $statement->bind_param('ssssssss', $newusername, $newemail, $newabout, $newbooks, $newauthors, $newmovies, $newtv, $id); // bind parameters for query
        $statement->execute();

    }

}
你有:

$statement->bind_参数('sss',$newusername,…。

其中有7个“s”,但有8个字段和变量


只需再添加一个's':
bind_参数('ssss',…

如果
$conn->prepare()
失败(即返回false),您的其余代码会发生什么情况?
$statement
是对象还是非对象?您是否尝试过使用
mysqli\u stmt\u error()
?是否检查了“$statement”是什么返回为?POST array/HTML表单也可能失败。使用错误报告并发布表单。错误报告会发现未定义的
$id
变量。其中定义了………..
$id
………..吗?您是否注意这里,而不仅仅是下面的答案?有八个参数ters.我添加了另一个“s”,它仍然给了我同样的问题。@Arty我不知道这是否是完整的脚本,但我在任何地方都没有看到$id变量(即在UPDATE语句之前)