在mysql查询后存储数据

时间:2015-02-11 19:38:05

标签: php mysql

这是我的问题。我的数据库中有一个表,其中有两列,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中的脚本。

2 个答案:

答案 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;