2017-06-25 73 views
0

我想使用PDO使用下面的代码,我想为context_list选择值的数组,但它返回一个记录,任何想法,我哪里会出错?使用PDO返回数组

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到会话访问,但这是另一个问题。

回答

0

您的查询可能会返回几个记录(只要它们实际存在于表中)。
您的代码在所有记录中循环(使用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数组中所有值的逗号分隔列表。

+0

返回:注意:注意:这个行的C:\ xampp \ htdocs \ gygaia_web \ query_select.php中的数组到字符串转换:echo explode(',',$ context_list); –

+0

我找到了一个解决方案,我将它添加到问题中作进一步评论 –

+0

我写了'explode'而不是'implode'。它现在应该工作。 – Jocelyn