我是PHP的新手,希望有人可以帮助我。
我有一个 Select 查询,它返回(除其他外)数据库表中两列的值,"ID
"和"en
"。从 Select 获取结果时,我想将每个项目的这两个值存储在二维数组中。
到目前为止,我有以下内容。Select 本身工作正常,但是当推送到数组时,它只输出 Select 结果中的最后一项(看起来也正确),所以我的猜测是,我每次都会覆盖它,而不是将每个项目添加到数组中。
有人可以告诉我我在这里做错了什么吗?另外,请让我知道这里是否应该首选 While 以外的其他内容。
我的PHP:
<?php
$tbl = "TranslationsMain";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM " . $tbl;
$result = $conn->query($sql);
while($translations = $result->fetch_assoc()){
$arr = array('ID' => $translations['ID'], 'en' => $translations['en']);
}
$conn->close();
print_r($arr);
?>
电流输出(用小表测试):
Array ( [ID] => ID10 [en] => Value10 )
预期产出:
Array ( [ID] => ID1 [en] => Value1, [ID] => ID2 [en] => Value2, [ID] => ID3 [en] => Value3, ... [ID] => ID10 [en] => Value10 )
提前非常感谢,话筒
您获得此输出是因为您正在覆盖array
中的键。您需要保存到另一个array
(也称为非二维):
<?php
$tbl = "TranslationsMain";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM " . $tbl;
$result = $conn->query($sql);
while($translations = $result->fetch_assoc()){
// ***** Create a new array here ***** //
$arr[] = array('ID' => $translations['ID'], 'en' => $translations['en']);
}
$conn->close();
print_r($arr);
?>
为您提供:
Array (
[0] => Array ([ID] => ID1 [en] => Value1 ),
[1] => Array ([ID] => ID2 [en] => Value2 ),
[2] => Array ([ID] => ID3 [en] => Value3 ),
)
将$arr
替换为$arr[]
,然后尝试。