我试图通过PHP简单地收集一个sql结果集而没有添加密钥=>价值对我非常喜欢。 > _<
下面的代码能够从键值对中获取值,但连续两次给我。
$dbh = new PDO('mysql:host=localhost;dbname=???', $user, $pass);
$sql = "SELECT * FROM products";
foreach ($dbh->query($sql) as $results)
{
foreach($results as $key => $value){
echo $value.';';
}
}
结果:“什么;什么;我;我;寻找;寻找;为;为;”。
我知道我遗漏了一些非常基本的东西,如果可以清除它将是VITAL ......我已经尝试过一次又一次地修改这个,这是我能够获得真正期望输出的最接近的。
期望的结果:“什么;我;寻找;为;”。
答案 0 :(得分:1)
PDO最有可能返回列名和序号位置作为地图中的$key
。您可以通过检查输出是否为is_numeric
来过滤输出,并仅返回与序数值对应的值。
$dbh = new PDO('mysql:host=localhost;dbname=???', $user, $pass);
$sql = "SELECT * FROM products";
foreach ($dbh->query($sql) as $results)
{
foreach($results as $key => $value){
if (is_numeric($key)) {
echo $value.';';
}
}
}
正如@Sean所提到的,您可以通过将适当的值传递给query
函数调用的第二个参数来专门返回列名(或序号位置):
$dbh = new PDO('mysql:host=localhost;dbname=???', $user, $pass);
$sql = "SELECT * FROM products";
foreach ($dbh->query($sql, PDO::FETCH_ASSOC) as $results)
{
foreach($results as $key => $value){
echo $value.';';
}
}
答案 1 :(得分:1)
为了其他开发人员和我自己,我想将代码最终化为准系统,以便他人更容易学习或操作。感谢帮助,GUYS !!!
$dsn='mysql:host=localhost;dbname=YOUR_DATABASE';
$user='USER_NAME';
$pass='PASSWORD';
$dbh = new PDO($dsn, $user, $pass);
foreach ($dbh->query("SELECT * FROM YOUR_TABLE", PDO::FETCH_ASSOC) as $results){
foreach($results as $key => $value){
echo $value;
}
}