gpt4 book ai didi

PHP 和 MySQL 我看不到这个错误?

转载 作者:行者123 更新时间:2023-11-29 20:59:44 24 4
gpt4 key购买 nike

在编写数据库相关代码时,我不断收到此错误。在过去的一个月左右的时间里,我一直在尝试各种不同的方法来解决我遇到的错误。我发现的唯一一个是关于消息传递的 foreach。

背景故事:我有一个个人网站,目前我正在尝试将消息传递和好友等社交功能融入其中。将来我计划添加个人资料图片等内容。

错误:

[TIME] [:error] [pid PID] [client IP:PORT] PHP Fatal error:  Call to a member function bind_param() on a non-object in /www/hub/models/funcs.php on line 1656, referer: http://my.website.com/hub/users.php

错误指向这一行:

$stmt->bind_param("i", $user);

通过此函数访问:

function getUnreadMessages($user)

此资源访问的内容:

left-nav.php

网站上的每个页面都会访问它,并尝试运行这行代码:

$unread = getUnreadMessages($loggedInUser->user_id);

这样它就可以运行这些代码行:

if($unread > 0){
echo "<li><a href='user_messages.php'>Messages</a>(".$unread.")</li>";
}else{
echo "<li><a href='user_messages.php'>Messages</a></li>";
}

这是完整的功能:

function getUnreadMessages($user){
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("SELECT
id,
from_user,
to_user,
time_sent,
subject,
message,
deleted
FROM ".$db_table_prefix."messages
WHERE
to_user = ?
AND
read = 0
");
$stmt->bind_param("i", $user);
$stmt->execute();
$unread = $stmt->num_rows;
$stmt->close();
return($unread);
}

抱歉,这太乱了。我希望你能理解我的沮丧。还有更多错误,但这是目前最大的问题。如果你们中的任何人愿意在这篇文章之外提供更多支持,我将非常感激。

最佳答案

PHP Fatal error: Call to a member function bind_param() on a non-object

表示 var $stmt 是一个非对象,可能是 NULL ,根据 PHP 错误,它不是一个对象,可以调用任何方法。

查看您的 getUnreadMessages() 函数,我发现 $mysqli 是一个全局函数。是否有可能其他逻辑正在修改系统中其他地方的 $mysqli

您是否也看到类似的 PHP fatal error “调用非对象上的成员函数prepare()”?如果您这样做,这将表明 $mysqli 在上述逻辑之外以某种方式被修改。

此时,在我看来,$stmt 是一个非对象(var_dump($stmt); 出于兴趣显示了什么?),因为 $mysqli->prepare(...) 可能不会返回任何内容(或者返回某些东西,但不是一个对象)。

如果 SQL 字符串有效,我会通过 Google 搜索 MySQLi prepare() 应该输出什么,如果 SQL 字符串有效,会发生什么情况。

关于PHP 和 MySQL 我看不到这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37337226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com