我已经建立了一个用户注册广告的表格。提交广告的所有人都将成为该广告的所有者。所以现在我尝试通过提供所有者的用户名来获取与这些广告相关的所有信息。
我构建了这个功能:
function get_ad_info_by_username($username,$table_name) {
$ad_info = array();
$db = new mysqli("localhost", "root", "", "bazar-rooz") or die ('db connection issue!');
$query = $db->query("SELECT * FROM `$table_name` WHERE `username` = '$username'");
$db->query("set names 'UTF8'");
if ($query->num_rows) { // here I get the error ... property of non-object
while ($row = $query->fetch_object()) {
$ad_info[] = $row;
}
}
return $ad_info;
}
我在其他功能中使用相同的结构来获取不同的信息。它们工作正常,但是当我尝试运行页面向最终用户显示广告信息时,这个一直都会出错。
注意:尝试获取非对象的属性 第261行第261行的C:\ wamp \ www \ site \ functions \ functions.php是 我在代码中注释了一行。
是的,我认为查询存在问题,但我找不到。
答案 0 :(得分:1)
你正在使用mysqli错误的方式。用许多错误的方式说实话。
然而,与原始mysqli一样,它将需要太多的额外代码,我将向您展示使用PDO的正确方法。尽管如此,以下所有指南对于两个驱动因素都很常见:
在这里
$dsn = "mysql:host=localhost;dbname=bazar-rooz;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','', $opt);
function get_ad_info_by_username($username)
{
global $pdo;
$stmt = $pdo->prepare("SELECT * FROM table_name WHERE `username` = ?");
$stmt->execute([$username]);
return $stmt->fetchAll();
}
$ads = get_ad_info_by_username('joe');
答案 1 :(得分:-1)
可能是您传递给函数的表名
get_ad_info_by_username($username,$table_name)
错误或数据库中不存在。
因为那个
$db->query("SELECT * FROM `$table_name` WHERE `username` = '$username'");
返回值FALSE,因此您收到错误/警告。