将MySQL结果转换为PHP数组

将MySQL结果转换为PHP数组,php,mysql,json,pdo,Php,Mysql,Json,Pdo,我正在尝试获取以下格式的json数组: var js_array = [ ["Name1", "Address1", "Url1"], ["Name2", "Address2", "Url2"], etc... ] 来自MySQL查询。 这是我的数据库: +---------+-------------+---------+ | Name | Address | URL | +---------+-------------+---------+ | N

我正在尝试获取以下格式的json数组:

var js_array = [
   ["Name1", "Address1", "Url1"],
   ["Name2", "Address2", "Url2"],
   etc...
]
来自MySQL查询。 这是我的数据库:

+---------+-------------+---------+
|   Name  |   Address   |   URL   |
+---------+-------------+---------+
|  Name1  |  Address1   |   Url1  |
|  Name2  |  Address2   |   Url2  |
|  Name3  |  Address3   |   Url3  |
+---------+-------------+---------+
我试过这个:

$query = $bdd->query('SELECT Name, Adress, URL FROM festivals');
while ($row = $query->fetch()) {
    $array[] = $row['Name'];
    $array[] = $row['Adress'];
    $array[] = $row['URL'];
}
//Then I return it as an js array that I use later
$js_array = json_encode($array);
$query = $bdd->query('SELECT Name, Adress, URL FROM festivals');
while ($row = $query->fetch()) {
    $array[] = $row;
}
//Then I return it as an js array that I use later
$js_array = json_encode($array);
结果是:

["Name1", "Address1", "Url1", "Name2", "Address2", "Url2", "Name3", "Address3", "Url3"]
我也试过:

$query = $bdd->query('SELECT Name, Adress, URL FROM festivals');
while ($row = $query->fetch()) {
    $array[] = $row['Name'];
    $array[] = $row['Adress'];
    $array[] = $row['URL'];
}
//Then I return it as an js array that I use later
$js_array = json_encode($array);
$query = $bdd->query('SELECT Name, Adress, URL FROM festivals');
while ($row = $query->fetch()) {
    $array[] = $row;
}
//Then I return it as an js array that I use later
$js_array = json_encode($array);
其中返回以下内容:

[
 {0: "Name1", 2: "Address1", 2: "Url1", Name: "Name1", Address: "Address1", URL: "Url1"},
 {0: "Name2", 2: "Address2", 2: "Url2", Name: "Name2", Address: "Address2", URL: "Url2"}
]
有办法得到我想要的吗?
谢谢

您只需要为每一行创建一个数组,其中只有值:

$query = $bdd->query('SELECT Name, Adress, URL FROM festivals');
while ($row = $query->fetch()) {
    $array[] = array($row['Name'], $row['Adress'], $row['URL']);
}
//Then I return it as an js array that I use later
$js_array = json_encode($array);

或者您可以只执行
fetchAll()
,这也可以执行相同的操作。@第二个测试用例相当于
fetchAll()
,并产生错误的结果。例如,请参见@Nick,这是因为fetch样式默认为
PDO::fetch\u BOTH
。要获取数字索引,只需执行
$query->fetchAll(PDO::FETCH_NUM)