如何将输出与数据库分开?

时间:2018-11-07 08:25:26

标签: php mysqli

我试图使用PHP从数据库中获取多行,但我得到的只是一行文本,例如:“ 8910”

我的代码如下:

  $sql = "SELECT * FROM posts WHERE idUsers=$id";
  $sth = $conn->query($sql);
  if(!$sth) {
    echo("Error description: " . mysqli_error($conn));
    die();
  }

  $rows = mysqli_num_rows($sth);

  for ($x = 0; $x <= $rows; $x++) {
       $sql = "SELECT idPosts FROM posts WHERE idUsers=$id";
       if(!$sth) {
         echo("Error description: " . mysqli_error($conn));
         die();
       }
       $result = mysqli_fetch_array($sth);

       $postId = $result['idPosts'];

       echo $postId;

  }

然后我对此进行编辑:echo $postId." ";

并在ID之间获得一个空格,如下所示:8 9 10。

我试图做$postIds = explode(" ", $postId);

然后回显例如$postIds[0],但我又一次获得了所有ID

现在我不知道该怎么办,所以我需要帮助^^

2 个答案:

答案 0 :(得分:0)

$postId = $result['idPosts'];替换为$postId[] = $result['idPosts'];。这样,您可以创建数组,就像访问$postId[0]一样。

您还忘记了再次查询。

...
$sql = "SELECT idPosts FROM posts WHERE idUsers=$id";
$sth = $conn->query($sql);
if(!$sth) {
...

答案 1 :(得分:0)

您的第二个查询是不必要的,您已经拥有第一个查询的所有数据。只需将代码替换为:

$sql = "SELECT * FROM posts WHERE idUsers=$id";
$sth = $conn->query($sql);
if (!$sth) {
    echo("Error description: " . mysqli_error($conn));
    die();
}
$postIds = array();
while ($row = mysqli_fetch_array($sth)) {
    $postIds[] = $result['idPosts'];
}

此循环后,您将具有所有idPosts值的数组。然后,您可以根据需要对其进行处理。或者您可以在循环中处理它们:

while ($row = mysqli_fetch_array($sth)) {
    $postId = $result['idPosts'];
    // code to process postId e.g.
    echo "$postId<br/>";
}