我有一个新闻项目表(包括字段标题,内容,日期,来源和主要索引)。使用$newsrow['title']
我已成功设法获取第一行项目的标题,但此后无法访问下一行的项目。我尝试了$newsrow[#]['title']
(我的意思是$ newsrow [0] [' title']来访问第一行的标题),但是标记为:Warning: Illegal string offset
。会避免在这里使用循环,因为内部有一些例外,我认为这里可能有更直接的方式。
以下是我正在调用的函数(newfunction.php):
<?php
function news_data($conn)
{
$query = "SELECT * FROM news ORDER by newstrack ASC LIMIT 3";
$result = $conn->query($query);
$row = $result -> fetch_array(MYSQLI_BOTH);
return $row;
}
?>
这就是我访问前端值的方式:
<div class="art1">
<h4 class="newshead"><?php echo $newsrow[0]['title'];?></h4><br>
<img src="images/jaipur2.png" class="pic1">
<p class="newspara">Sessions unfolded at a charming colonial heritage property. Among the guests were ...</p><br>
</div>
<img class="tab3" src="images/newstab.png" alt="main">
<a href="reviews.html">news</a>
<div class="art2">
<h4 class="newshead"><?php echo $newsrow['title'];?></h4><br>
<img src="images/aksh.png" class="pic2">
<p class="newspara">From a trip to the temple to a meeting with students </p>
</div>
<div class="art3"><br>
<h4 class="newshead">FEST A HIT WITH VISITORS</h4><br>
<img src="images/kumaon.png" class="pic3">
<p class="newspara">The first edition of the two-day Food Festival kicked off <b>...</b></p>
</div>
</section>
我的设置进行连接,并将上述函数传递给数组变量:
$newsrow = news_data($conn);
非常感谢如何访问特定行的值,而不需要循环。
答案 0 :(得分:1)
函数fetch
返回指针的下一行(因此第一次调用返回第一行,第二次调用返回第二行,依此类推)。这就是您尝试使用$newsrow[#]['title']
进行访问时出错的原因。您实际上正在访问结果的第0列。
回答你的问题:你可以用data_seek(http://php.net/manual/de/mysqli-result.data-seek.php)移动指针。这将导致:
$result->data_seek(#);
$row = $result->fetch_array(MYSQLI_BOTH);
希望这有帮助。
答案 1 :(得分:1)
来自文档
(PHP 5,PHP 7)mysqli_result :: fetch_array - mysqli_fetch_array - 获取结果行作为关联行,数字数组或两者
这只返回一行,而不是我怀疑你正在寻找的所有行。
如果您希望返回一个数组中的所有行,也许可以查看此Get all mysql selected rows into an array。给出的答案是(你不需要json_encode)
$json = mysqli_fetch_all ($result, MYSQLI_ASSOC);
echo json_encode($json );