【问题标题】:Only getting first item in array in php mysqli仅在 php mysqli 中获取数组中的第一项
【发布时间】:2014-01-27 21:08:13
【问题描述】:

嗨,我被困在这个回声数组部分。只得到第一个项目。 请帮忙!我们将不胜感激所有帮助!

session_start();
$session = $_SESSION['sessionId'];

$link = mysqli_connect("localhost", "ideajackpot", "random!", "ideajackpot");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$result = "SELECT title FROM title WHERE session_id LIKE $session";

$flickrItems = mysqli_query($link, $result);
$flickrArray = mysqli_fetch_array($flickrItems);


mysqli_close($link);

foreach($flickrArray as $result) {
    echo $result.' ';
}

【问题讨论】:

    标签: php mysql arrays mysqli


    【解决方案1】:

    您只获得了 SQL 查询的第一行,因为您只调用了一次 mysqli_fetch_array()。您需要遍历结果以获取所有返回的行:

    while ($flickrArray = mysqli_fetch_array($flickrItems);
        echo $flickrArray['title'].' ';
    }
    

    【讨论】:

    • 我把它改成了 echo $flickrArray[0]。' ';现在可以使用了,谢谢!
    • 不过我很好奇。这条线WHERE session_id LIKE $session 不应该是WHERE session_id='$session' 吗?以另一种方式做需要有% 标志,不是吗?
    • 嗯,好的。虽然很奇怪。我想有一些我不知道的事情,我现在知道了。 @RaymondtheDeveloper - 有时间会试一试的。
    【解决方案2】:

    您也可以尝试面向对象的方法:

      $link = new mysqli("localhost", "ideajackpot", "random!", "ideajackpot")
    
      $flickrItems = $link->query("SELECT title FROM title WHERE session_id LIKE $session");
    
      while ($flickrItem = $flickrItems->fetch_assoc() ){
            $result[] = $flickrItem;
      }
    
      var_dump($result);
    

    【讨论】:

      【解决方案3】:

      如果您只想获取数组中的第一项,或者可能是最后一项,为什么不为此创建一些小函数。

      /**
       * Return first element in array.
       *
       * @param array $array
       * @return mixed
       */
      function array_first(array $array)
      {
          reset($array);
      
          return current($array);
      }
      
      /**
       * Return last element in array.
       *
       * @param array $array
       * @return mixed
       */
      function array_last(array $array)
      {
          reset($array);
      
          return end($array);
      }
      

      用法:

      $foo = [1, 2, 3];
      
      var_dump(array_last($foo));
      

      【讨论】:

        猜你喜欢
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多