我正在尝试执行查询但仍然收到错误致命错误:在非对象上调用成员函数fetch_assoc()。我已经在论坛中搜索了答案,但我对php非常陌生,我找到的很多东西对我来说非常先进。我正在使用Joomla,与数据库的连接正在工作,我可以成功写入我正在使用的表,但无法从中选择信息而不会出现此错误。
<?php
$message = '';
$db = JFactory::getDBO();
if($db->connect_error)
{
//if error assign to message
$message = $db->connect_error;
}
else
{
$sql = 'SELECT * FROM jos_offer';
$result = $db->query($sql);
if($db->error)
{
$message = $db->error;
}
else
{
while($row = $result->fetch_assoc())
{
echo '<div>'.$row['student_id'].$row['offer'].'</div>';
}
}
}
?>
答案 0 :(得分:1)
如果您在Joomla,您应该利用APIS使您的代码更清晰,更简单。
$db = JFactory::getDBO();
$query = $db->getQuery(true)
->select('*')->from($db->quoteName('#__offer'));
$db->setQuery($query);
$results = $db->loadObjectList();
//$results = $db->loadAssocList(); // If you really want that, not sure why you would.
if ($db->getErrorNum())
{
echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED',
$db->getErrorNum(), $db->getErrorMsg()) . '<br />';
return;
}
if (!empty($results))
(
foreach ($results as $result)
{
echo '<div>'.$result->student_id. ' ' , $result->offer . '</div>';
// Or switch to the associative array version
// echo '<div>'.$result['student_id']. ' ' . $result['offer'] . '</div>';
}
}
答案 1 :(得分:0)
while($ row = $ result-&gt; fetch_assoc())
应该是:
while($row = $db->loadResultArray($result))
$result
不是您认为的对象。这是一个MySQLi_resultset_resource
,除了将其传递给fetch_assoc
除非您有Joomla数据库包装器的文档,否则我建议不要使用它。本机PHP包装器至少同样好,如果不是更好。
查看MySQLi包装器:http://php.net/manual/en/mysqli-result.fetch-assoc.php
答案 2 :(得分:0)
感谢您的帮助,我使用
开始工作$db->setQuery($query);
if( $rows = $db->loadObjectList() )