【问题标题】:Returning an array using PDO使用 PDO 返回一个数组
【发布时间】:2017-11-28 14:32:19
【问题描述】:

我正在尝试使用以下代码使用 PDO,我想为 context_list 选择值数组,但它返回一条记录,有什么想法我哪里出错了吗?

try {
$sql2 = "SELECT area_easting, area_northing, context_number FROM excavation.contexts";
$sth = $conn->prepare($sql2);
$sth->execute();
  while ($row = $sth->fetch(PDO::FETCH_ASSOC))
    {
        $easting_list = $row['area_easting'];
        $northing_list = $row['area_northing'];
        $context_list = $row['context_number'];
    }
}   

catch(PDOException  $e )
{
    echo "Error: ".$e;
}


echo "context list: ";
echo $context_list;

部分解决方案:

这行得通:

$query = $conn->prepare("SELECT area_easting, area_northing, context_number FROM excavation.contexts");
$query->execute();
while($r = $query->fetch(PDO::FETCH_OBJ)){
    echo $r->area_easting, '|';
    echo $r->area_northing;
    echo '<br/>';
}

但现在我需要让会话可以访问 $r->area_easting,但这是另一个问题。

【问题讨论】:

    标签: postgresql pdo php-7


    【解决方案1】:

    您的查询可能会返回多条记录(前提是它们确实存在于表中)。
    您的代码循环遍历所有记录(使用 while 循环),但值($easting_list、$northing_list 和 $context_list)在循环中被覆盖。

    我建议对您的代码进行以下更改:

    $easting_list = array();
    $northing_list = array();
    $context_list = array();
    try {
        $sql2 = "SELECT area_easting, area_northing, context_number FROM excavation.contexts";
        $sth = $conn->prepare($sql2);
        $sth->execute();
        while ($row = $sth->fetch(PDO::FETCH_ASSOC))
        {
            $easting_list[] = $row['area_easting'];
            $northing_list[] = $row['area_northing'];
            $context_list[] = $row['context_number'];
        }
    }
    catch(PDOException  $e )
    {
        echo "Error: ".$e;
    }
    
    echo "context list: ";
    echo implode(', ', $context_list);
    

    现在所有的值都存储在 3 个数组中。 explode 用于打印$context_list 数组中所有值的逗号分隔列表。

    【讨论】:

    • 返回:注意:数组到字符串的转换在 C:\xampp\htdocs\gygaia_web\query_select.php 为这一行:echo explode(', ', $context_list);
    • 我找到了解决方案,我会将其添加到问题中以供进一步评论
    • 我写的是explode而不是implode。它现在应该可以工作了。
    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2016-12-11
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    相关资源
    最近更新 更多