我有一张表格(见下图),其中包含一些不同草药的波兰语和拉丁语名称。
我想获得一个 $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);
?>
最佳答案
我相信您正在寻找 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'
],
// ...
]
这可能比只返回值更好一些。
关于php - 有很多值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060010/