gpt4 book ai didi

php - 调用非对象成员函数

转载 作者:行者123 更新时间:2023-11-29 07:59:19 26 4
gpt4 key购买 nike

我刚开始接触 PHP,需要你的帮助。

我创建了一个尝试,列出与 current_member 有相同兴趣的所有成员(我的意思是连接的成员)。

我这样写:

$current_members = params('current_member');
$members_all = option('db')->query('SELECT * FROM members WHERE interest = $current_members["interest"] ORDER BY lastname, firstname')->fetchAll();

set('members_all', $members_all);

当我进入我的页面时,出现错误: fatal error :在非对象上调用成员函数 fetchAll()

在我看来,我只是写这个:

        <h2 id="member-<?= $member['id'] ?>">

<?= avatar_tag($member,'30x30') ?>

<a href="<?=member_url_for($member)?>"><?=$member['firstname']?><small> <?= $member['lastname'] ?></small></a>

</h2>

我不明白这个错误,有人可以帮助我吗?

感谢您的帮助。

最佳答案

不要像您正在做的那样链接调用 query()fetchAll() 。这是不好的做法。永远不要假设您的查询有效,始终检查它是否有效。

$db = option('db');
$query = $db->query('SELECT ...');
if($query === FALSE){
print_r($db->errorInfo());
die;
}
$members_all = $query->fetchAll();

(由于您正在调用 fetchAll(),我假设您正在使用 PDO(而不是 MySQLi))

此外,请勿尝试将变量连接到 SQL 查询中。 (P.S. 你甚至没有这样做,你使用的是单引号,所以 $current_members["interest"] 不会被读取为变量)这只是要求 SQL 注入(inject)攻击。您想要做的是使用准备好的语句。

$db = option('db');
$query = $db->prepare('SELECT * FROM members WHERE interest = ? ORDER BY lastname, firstname');
$exec = $query->execute(array($current_members['interest']));
if($exec === FALSE){
print_r($query->errorInfo());
die;
}
$members_all = $query->fetchAll();

关于php - 调用非对象成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24315517/

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