2017-06-25 115 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