我不知道这条线的问题是什么或者如何解决它,之前还好,现在我收到了这个错误:
mysqli_fetch_object()期望参数1为mysqli_result
这是我的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;
}
}
&GT;
答案 0 :(得分:4)
就您的确切错误而言,您的某个查询失败,以下步骤可能会有所帮助。当然,你的问题看起来很复杂,但这里有一些解决你问题的事情
你的第一个查询应该是这样的,没有花括号,当然你直到用表格中的花括号包含明确的id。
SELECT * FROM user WHERE user_id ='$userid'
其次,您正在执行多个查询,因此您可能需要考虑错误检查,如果您的查询正确执行(由于语法错误列不匹配表名称不匹配更多的可能性):像while($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
正在制作一个逗号分隔的列表,以便你可以在最后一个查询中将它作为参数提供,这是一个长镜头,为什么不为你使用子查询{{1像这样的子句:
IN
答案 1 :(得分:3)
您所说的错误转换为:查询以某种方式失败,而不是运行mysqli_query($ link,$ sorgu); line echo $ sorgu,转到phpmyadmin并测试你的查询,如果不好,请在phpmyadmin中修复它,直到它正常工作并在代码中正确设置