我有一张桌子(见下图),其中包含波兰语和拉丁语名称,供您选择不同的草药。
我想获得一个$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);
?>
答案 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'
],
// ...
]
这可能是一个更好的主意,而不是只返回值。