Php 致命错误消息
内容类型:text/htmlPhp 致命错误消息,php,sql,Php,Sql,内容类型:text/html 致命错误:对第88行/home/content/18/8476518/html/training/emailOverdo.php中的非对象调用成员函数fetch_object() 这是什么意思 $courses[] = array('name' => $obj->name, 'length' => $obj->length); } else { $query = "SELECT address FROM email LEFT JOI
致命错误:对第88行/home/content/18/8476518/html/training/emailOverdo.php中的非对象调用成员函数fetch_object()
这是什么意思强>
$courses[] = array('name' => $obj->name, 'length' => $obj->length);
} else {
$query = "SELECT address FROM email LEFT JOIN managers ON (email.id=managers.person_id) WHERE branch_id='".$branch_id."' AND tier='1' AND email.category='2'";
$managers = $db->query($query);
while($manager = $managers->fetch_object())
{
notifyManager($manager->address, $courses, $first_name, $last_name, $day);
}
示例。
这是您的dbc类
<?php
class dbc {
public $dbserver = 'server';
public $dbusername = 'user';
public $dbpassword = 'pass';
public $dbname = 'db';
function openDb() {
try {
$db = new PDO('mysql:host=' . $this->dbserver . ';dbname=' . $this->dbname . ';charset=utf8', '' . $this->dbusername . '', '' . $this->dbpassword . '');
} catch (PDOException $e) {
die("error, please try again");
}
return $db;
}
function getAllData($qty) {
//prepared query to prevent SQL injections
$query = "select * from TABLE where qty = ?";
$stmt = $this->openDb()->prepare($query);
$stmt->bindValue(1, $qty, PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $rows;
}
?>
您的PHP页面:
<?php
require "dbc.php";
$db = new dbc;
$getList = $db->getAllData(25);
foreach ($getList as $key=> $row) {
echo $row['columnName'] .' key: '. $key;
}
您的查询可能返回类似于null
或false
(取决于您的数据库类)
您的查询错误,或者您没有可选择的数据
您应该检查$managers是否存在null
,或者错误情况下的预期值:
if ($managers !== null) {
//while()
}
警告:您的代码可能容易受到sql注入攻击!您的查询没有执行,我认为更确切地说,$managers不是您所认为的,因为您试图访问它上的fetch_对象。根据这个逻辑,回溯到$db。你确定这是一个有效的连接,并且你的查询没有返回错误吗?你的代码中没有第88行只是为了澄清一下,你是在使用MySQLI还是PDO?我……嗯,这是如何回答这个问题的?有些。它用循环解决他的问题,用未准备好的查询解决他的问题,并使用PDO。我不能为他写完整的代码;)您的示例从未实例化该类$db=新的dbc;抢手货谢谢意志add@Andrew-我还注意到,在谷歌搜索“$getList=$db->getAllData(25);”时,您已经使用了五次这个答案;)但你是对的;您第一次使用它的时间早于pastebin代码,所以我删除了我之前的注释。