我正在使用PDO从xampp的phpmyadmin调用我的数据库。XAMPP版本7.0.1-0
当我从头开始创建数组并分解时,它给了我想要看到的结果。
例如:
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr);
哪个给我:
你好世界!美丽的一天!
但是,当我对数据库查询执行相同的操作时,会发生这种情况:
注意:第57行上的C:\ xampp \ htdocs \ WHS_Webtour \ Search_Categories \ People_Search_Result \ people_search.php中的数组到字符串的转换
数组数组数组数组数组数组...
我已经使用var_dump()
来查看数组是否真正显示了,并且显示了。
这是我以前从sql数据库调用的代码:
function getData($db)
{
$stmt = $db->query('SELECT NAME FROM people');
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
然后我添加了echo implode(" ",$result);
,这给了我上面的错误结果。
如果有帮助,我已经导入了从.dbf转换为.sql的数据库文件。
UPDATE我更新了以下代码行:$result = $stmt->fetch(PDO::FETCH_ASSOC);
它只打印出50个名称中的一个。
fetchAll()
返回数组数组(多维数组)。由于语言的限制,多维数组无法立即转换为文本。尝试使用fetch()
返回您的值,该值将获得一行作为单个数组。您可以循环执行此操作:
while($row = $stmt->fetch() {
$line = implode(" ",$row);
}
由于您仅从数据库中获得一列,所以可以将所有返回的值放在一个数组中:
while($row = $stmt->fetch() {
$names[] = $row['NAME'];
}
$allNames = implode(" ", $names);
通过这种方式,将每个返回的项目推入一个数组($names
)中,然后可以对其进行内爆。
根据您的查询判断,我想您想内嵌所有名称,但是您遇到的问题是,您提取的每一行都将是一个数组。
function getData($db)
{
$stmt = $db->query('SELECT NAME FROM people');
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$names = array();
foreach($result as $name) {
$names[] = $name['NAME'];
}
return $names;
}
这将特别以您期望的方式返回信息。它将遍历每一行并将名称拉入一个新数组,然后将其返回。
另一种解决方案是直接在您的查询中执行此操作。
SELECT
GROUP_CONCAT(`NAME` SEPARATOR ' ') AS `NAMES`,
1 AS `x`
FROM `people`
WHERE 1
GROUP BY `x`
fetchAll()
返回一个数组数组。如果您想implode()
您的数据,您可能想使用fetch()
:]
function getData($db) { $stmt = $db->query('SELECT NAME FROM people'); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo implode(" ",$row); } }
应该有帮助!
$implodedVal = implode(', ', array_map(function ($indArray) {
return implode(", ", $indArray);
}, $result));