这似乎是重复的问题,但我尝试了所有已经发布的答案。
这是我的代码
include"db.php";
//$poster_id=1;
$sql = "SELECT pi.full_name,pi.poster_img,pi.poster_tag,
p.post_title,p.post_description,p.post_tag,
p.post_snap
FROM POSTS p JOIN POSTER_INFO pi ON p.poster_id=pi.auth_id";
$result = mysql_query($sql) or die(mysql_error());
echo mysql_error();
$msg=" ";
while($row = mysql_fetch_array($result)) {
$msg_footer="<div class='post_footer'>";
$msg_footer=$msg_footer."<div class='post_img'>";
$msg_footer=$msg_footer."<img src='". 'data:image/jpeg;base64,' . base64_encode( $row[6] ) ."' width='330' height='130' /></div>";
$msg_footer=$msg_footer."<div class='post_author'><div class='author_img'><img src='". 'data:image/jpeg;base64,' . base64_encode( $row[1] ) ."' width='80' height='80' /></div>";
$msg_footer=$msg_footer."<div class='author_info'><b>". $row[0] ."</b><br/><span style='font-size:11px'>". $row[2] ."</span><br/><span style='font-size:10px'>1 Post</span></div></div></div>";
$msg .= " <li><br/><span class='post_title'>". $row[3] ."</span><br/><br/><span class='post_description'>" . $row[4] . "</span></li>";
$msg .=$msg_footer; //WARNING POINTING TO THIS LINE
}
我收到警告,指向while循环的最后一行;
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\labs\load_data.php on line 40
我的sql查询是正确的,因为,我试图在sql编辑器和php页面中执行它。 像这样
<?php
$sql = "SELECT pi.full_name,pi.poster_img,pi.poster_tag,
p.post_title,p.post_description,p.post_tag,
p.post_snap
FROM POSTS p JOIN POSTER_INFO pi ON p.poster_id=pi.auth_id";
$result = mysql_query($sql) or die(mysql_error());
echo mysql_error();
while($row = mysql_fetch_array($result)) {
?>
<tr>
<td><?php echo $row[0]; ?></td>
<td><?php echo $row[2]; ?></td>
<td><?php echo $row[3]; ?></td>
</tr>
<?php }
?>
在这种情况下,我没有收到任何警告。
答案 0 :(得分:1)
我很确定错误不是由您发布的代码触发的。
检查代码中所有位置的mysql_query()
的返回值,如下所示:
if(mysql_query(...) === FALSE) {
die(mysql_error());
}
我发现你已经在你所显示的代码中执行了这个操作,但警告将在我假设的代码中的另一个点触发。
另一种解释可能是,您在代码中的某处覆盖$result
- 但这也没有显示。
一般建议:不要将mysql_*
函数用于新代码。它们已被弃用。请改用PDO
或mysqli_*
答案 1 :(得分:0)
我认为您的查询失败,因此生成布尔值FALSE而不是查询资源。但是第二个运行正常,这很奇怪。