2015-02-11 59 views
-3

這是我的問題。我在我的數據庫中有一個表,其中有兩列,ID和ANSWER。在這個數據庫中有更多的行具有相同的ID,所以我想將這個ID的所有結果保存在一個數組中。 的SQL代碼:mysql查詢後存儲數據

$sql6 = "SELECT * FROM Answer WHERE userId = :userId and qId = 'q6'"; 
$stmt6 = $conn->prepare($sql6); 
$stmt6->execute(array(':userId' => $_SESSION['SESS_MEMBER_ID'])); 

現在混帳的結果,我不知道有沒有用

$result6 = $stmt6->fetch(PDO::FETCH_OBJ); 

$result6 = $stmt6->fetchAll(); 

EX。 ID ANSWER q6 abba q6 bbaa

我會保存一個這樣的數組,例如:

$array=("abba","bbaa"); 

然後我將這個數組傳遞到腳本中的JavaScript。

+0

'因爲php5.5 array_column'或'foreach'會幫助你。 – 2015-02-11 19:42:59

回答

0

@Barmar,您的解決方案部分工作。我已經寫了這一點:

$sql6 = "SELECT * FROM Answer WHERE userId = :userId and qId = 'q6'"; 
    $stmt6 = $conn->prepare($sql6); 
    $stmt6->execute(array(':userId' => $_SESSION['SESS_MEMBER_ID'])); 
    $count6 = $stmt6->rowCount(array(':userId' => $_SESSION['SESS_MEMBER_ID'])); 

    $answer6 = array(); 

    while ($result6 = $stmt6->fetch(PDO::FETCH_OBJ)) { 
     $answer6[] = $result6->answer; 
    } 

的話,我想這個數組傳遞給一個腳本,所以:

<script> 
    var num = var ans6 = '<?php echo $count6; ?>'; 
    var ans6 = '<?php echo json_encode($answer6); ?>'; 

    for(var i=0; i<num;i++){ 
    alert(ans6); 
    } 

結果是在寫「[」阿爸「」 BBAA一個彈出「]」。

,但如果我寫

for(var i=0; i<num;i++){ 
    alert(ans6[i]); 
    } 

彈出顯示第一個 「[」,然後 「」「

1

您可以在循環中調用$stmt->fetch,將每行推入結果數組,或者您可以調用fetchAll一次 - 它返回所有行的數組。所以,下面是等價的:

$array = array(); 
while ($row = $stmt6->fetch(PDO::FETCH_OBJ)) { 
    $array[] = $row; 
} 

和:

$array = $stmt6->fetchAll(PDO::FETCH_OBJ); 

如果你想與一列的僅僅是價值,而不是代表全行對象的數組,循環會更容易:

while ($row = $stmt6->fetch(PDO::FETCH_OBJ)) { 
    $array[] = $row->q6; 
}