2015-02-11 60 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; 
}