mysql查询后存储数据


Store data after mysql query

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

前任。ID ANSWER q6 abba q6 bbaa

我会保存在这样的数组中,例如:

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

然后我将这个数组传递给javascript中的脚本。

您可以在循环中调用$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;
}

@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);
  }

结果是一个弹出窗口,其中写着"["abba","bbaa"]"。

但是如果我写

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

弹出窗口首先显示"[",然后显示"