简体   繁体   中英

build an array of an array from SQL query with php

I have the following working array of an array in PHP:

$explore1 = array
(
array("a.html", "A"),
array("b.html", "B"),
array("c","C")
);        
$arrlength = count($explore1);
for($x = 0; $x < $arrlength; $x++) {
  echo '<li><a href="'.$explore1[$x][0].'">'.$explore1[$x][1].'</a></li>';
}  }

I want to populate the explore1 array from SQL. If i simply change the code like below it has errors but I don't know what I'm suppose to do instead?

$sql = 'SELECT url, name FROM explore_items WHERE menuID="item1"';
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    $explore1 = array  //IT DOESN'T LIKE THIS LINE
(
while($row = $result->fetch_assoc()) {
    // BUILD SAME LINES AS ABOVE WITH ECHO
    echo "array('" . $row["url"]. ", '" . $row["name"]. "'),";
}
);  

Can anybody help?

Either you don't need $explore1 at all:

$sql = 'SELECT url, name FROM explore_items WHERE menuID="item1"';
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    //echo "array('" . $row["url"]. ", '" . $row["name"]. "'),";
    echo '<li><a href="'.$row["url"].'">'.$row["name"].'</a></li>';
  }
} 

or if you need you can fetch_all() :

$sql = 'SELECT url, name FROM explore_items WHERE menuID="item1"';
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  $explore1=$result->fetch_all(MYSQLI_ASSOC);
  foreach($explore1 as $row ) {
    //echo "array('" . $row["url"]. ", '" . $row["name"]. "'),";
    echo '<li><a href="'.$row["url"].'">'.$row["name"].'</a></li>';
  }
} 

Please learn some php basics. Defining an array of arrays is something like:

$explore1 = array();
while($row = $result->fetch_assoc()) {
    $explore1[] = array($row["url"], $row["name"]);
}

You must populate the array inside the loop:

while($row = $result->fetch_assoc()) {
    $explore1[$row["url"]] = $row["name"];
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM