Php 错误:mysqli_fetch_object()希望参数1是mysqli_结果
我不知道这条线有什么问题,也不知道如何解决,以前还可以,现在我得到了这个错误: mysqli_fetch_object()希望参数1是mysqli_结果 以下是我的PHP代码:Php 错误:mysqli_fetch_object()希望参数1是mysqli_结果,php,mysql,mysqli,Php,Mysql,Mysqli,我不知道这条线有什么问题,也不知道如何解决,以前还可以,现在我得到了这个错误: mysqli_fetch_object()希望参数1是mysqli_结果 以下是我的PHP代码: <?php } if($_GET['action']=="user_info") { $userid = $_GET['user_id']; $query = "SELECT * FROM user WHERE user_id ='{$userid}'"; $result
<?php
}
if($_GET['action']=="user_info")
{
$userid = $_GET['user_id'];
$query = "SELECT * FROM user WHERE user_id ='{$userid}'";
$result = mysqli_query($link, $query);
$user = mysqli_fetch_object($result);
$queryt = "SELECT * FROM user_title WHERE id='".$user->title."'";
$resultt = mysqli_query($link, $queryt);
$rowt = mysqli_fetch_object($resultt);
$title = $rowt->name;
$sorgu = "select * from pub_author where user_id='$userid'";
$publications = mysqli_query($link, $sorgu);
while($a = mysqli_fetch_object($publications))
{
$ids .= $a->pub_id . ',';
}
$ids = rtrim($ids,",");
$sorgu2 = "select count(id) as total , year from publication where id IN ($ids)
GROUP BY YEAR(`year`) order by `year` ";
$publications2 = mysqli_query($link, $sorgu2);
while($a2 = mysqli_fetch_object($publications2))
{
$mount = explode('-', $a2->year);
$accyaz[$mount[0]] = $a2->total;
}
}
您所说的错误转化为:查询以某种方式失败,而不是运行mysqli_查询($link,$sorgu);行echo$sorgu,转到phpmyadmin并测试您的查询,如果查询不正确,请在phpmyadmin中修复它,直到它正常工作并在代码中正确设置它就您的确切错误而言,您的一个查询失败,以下步骤可能会有所帮助。当然,你的问题看起来是重复的,但这里有一些东西可以解决你的问题
您的第一个查询应该是这样的,没有大括号,当然,直到在表中显式地用大括号包装ID
SELECT * FROM user WHERE user_id ='$userid'
第二,您正在执行多个查询,如果您的查询正确执行或不需要执行错误检查(因为语法错误列不匹配表名不匹配的可能性更大):像这样做错误检查,就像<代码> >($A...)/代码>部分
if ($result=mysqli_query($link, $sorgu);)
{
while($a=mysqli_fetch_object($result))
{
$ids .= $a->pub_id . ',';
}
$sorgu2 = "select count(id) as total , year from publication where id IN ($ids) GROUP BY YEAR(`year`) order by `year` ";
//... Your further code
}
else
{
echo "Something went wrong while executing query :: $sorgu";
}
第三,我看到您正在获取pub_id
以逗号分隔的列表,这样您就可以在上一次查询中将其作为参数,这是一个很长的过程,为什么不在子句中为您使用子查询,如下所示:
SELECT
COUNT(id) as total, year
FROM publication
where id
IN (
SELECT pub_id FROM pub_author WHERE user_id='$userid'
)
GROUP BY `year`
order by `year`;
您非常容易受到SQL注入的攻击。使用准备好的语句和绑定变量,或者至少使用mysqli\u real\u escape\u string($link,$variable)
。您很可能会遇到此错误,因为$user->title
中有一个'
,并且您没有转义变量。为什么要在查询中使用{}
user_id='{$userid}'
首先,您需要找出导致错误的查询。。从我的快速查看中,您正在4个单独的实例中获取一个mysqli对象。找到问题查询后,请编辑您的帖子,我们可以对其进行深入研究。如果(!empty(fetchresult)){}或者{},则问题在于数据库中没有数据。问题在于我在这一行有它的问题:while($a2=mysqli_fetch_object($publications2))您能否发布表的结构pub\u author
字段类型排序规则属性Null Extra-------------------------------------------------------------------id int(11)无自动增量pub\u id int(11)无用户id varchar(255)utf8\u turkish\u ci号