这是我的问题。我的数据库中有一个表,其中有两列,ID和ANSWER。在这个数据库中有更多的行具有相同的ID,所以我想在数组中使用此id保存所有结果。 sql代码是:
$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 :(得分: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;
}
答案 1 :(得分: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);
}
结果是一个弹出窗口,其中写着&#34; [&#34; abba&#34;,&#34; bbaa&#34;]&#34;。
但如果我写
for(var i=0; i<num;i++){
alert(ans6[i]);
}
弹出窗口首先显示&#34; [&#34;然后&#34; &#34; &#34;