PHP:简化的sql结果集,没有垃圾

时间:2017-03-19 03:57:37

标签: php sql

我试图通过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 ......我已经尝试过一次又一次地修改这个,这是我能够获得真正期望输出的最接近的。

期望的结果:“什么;我;寻找;为;”。

2 个答案:

答案 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;
    }
}