如何从获取的数组中访问特定行的列值,而不进行循环

时间:2016-01-18 08:52:37

标签: php sql arrays

我有一个新闻项目表(包括字段标题,内容,日期,来源和主要索引)。使用$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);

完成后,这是表结构: enter image description here

非常感谢如何访问特定行的值,而不需要循环。

2 个答案:

答案 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 );