具有多个值的数组

时间:2018-08-28 14:13:55

标签: php mysql sql arrays json

我有一张桌子(见下图),其中包含波兰语和拉丁语名称,供您选择不同的草药。

我想获得一个$herbs[]数组,该数组包含每一行的数组,例如:

$herbs = [[mieta pieprzowa, mentha piperita],[kozlek lekarski, valeriana medicinalis]...]

接收latin_name的代码如下所示,那我应该改变什么?

<?php
$connection = new mysqli("127.0.0.1","root","password","herbarium");
if ($connection→connect_error) die("Fatal Error");
$herb = $_GET['q'];
$query = "SELECT * FROM herbs WHERE (latin_name LIKE '%$herb%') OR (polish_name LIKE '%$herb%')";
$result = $connection→query($query);
$data = array();
while ($row=$result→fetch_assoc()){
$data[] = $row['latin_name'];
}
echo json_encode($data);
?>

my table

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找mysqli_fetch_all() + SQL查询的少量更改。

在下面的示例中,我将查询更改为仅获取两列(拉丁名称和波兰语名称),而无需使用while()循环,您可以一次获取所有记录(直到不需要处理此数据为止)

$connection = new mysqli("127.0.0.1","root","password","herbarium");
if ($connection→connect_error) die("Fatal Error");
$herb = $_GET['q'];
$query = "SELECT latin_name, polish_name FROM herbs WHERE (latin_name LIKE '%$herb%') OR (polish_name LIKE '%$herb%')";
$result = $connection→query($query);
$data = mysqli_fetch_all($result);
echo json_encode($data);

它应该返回具有key=>value结果的数组,例如:

[
  [
    'latin_name' => 'Abc',
    'polish_name' => 'Abc_PL'
  ],
  // ...
]

这可能是一个更好的主意,而不是只返回值。