【问题标题】:How to access a specific row's column values from a fetched array, without looping如何在不循环的情况下从获取的数组中访问特定行的列值
【发布时间】:2016-04-23 09:06:11
【问题描述】:

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

为了完成,这里是表结构:

希望了解如何在不循环的情况下访问特定行的值。

【问题讨论】:

  • 帮我一个忙,请var_dump($row);
  • 它只抛出第一行的细节:array(16) { [0]=&gt; string(1) "1" ["newstrack"]=&gt; string(1) "1" [1]=&gt; string(44) ...

标签: php sql arrays


【解决方案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 );

【讨论】:

  • 不知道fetch_array 只返回了一行,感谢您的链接,我现在使用$row = mysqli_fetch_all($result, MYSQLI_ASSOC);,它可以获取特定行的特定列的值,因为我本来打算的。谢谢。
【解决方案2】:

函数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);

希望这会有所帮助。

【讨论】:

  • 不知道它只返回了一行,感谢您的链接,我现在使用$row = mysqli_fetch_all($result, MYSQLI_ASSOC);,它可以按照我的意图获取特定行的特定列的值.谢谢。
猜你喜欢
  • 2011-12-21
  • 2019-12-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
相关资源
最近更新 更多