Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 错误:mysqli_fetch_object()希望参数1是mysqli_结果_Php_Mysql_Mysqli - Fatal编程技术网

Php 错误:mysqli_fetch_object()希望参数1是mysqli_结果

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

我不知道这条线有什么问题,也不知道如何解决,以前还可以,现在我得到了这个错误:

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 = 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号