2015-02-11 6 views
-3

Это моя проблема. У меня есть таблица в моей базе данных, в которой есть два столбца, ID и ANSWER. В этой базе данных больше строк с одинаковым идентификатором, поэтому я хочу сохранить все результаты с этим идентификатором в массиве. код SQL является:Хранить данные после запроса mysql

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

теперь fatch результаты, которые я не знаю, если я должен использовать

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

или

$result6 = $stmt6->fetchAll(); 

EX. ID ANSWER q6 abba q6 bbaa

я бы сохранить в массиве, как это, например:

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

тогда я бы передать этот массив в скрипт в JavaScript.

+0

' array_column' так php5.5 или 'foreach' поможет. –

ответ

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

результатом является всплывающее окно, в котором написано «[» ABBA «» 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; 
} 
Смежные вопросы