2014-10-19 4 views
1

Я довольно новичок в php и mysql. Я пытаюсь создать rest api из php, и поскольку у моего сервера нет mysqlnd, я должен использовать bind_result и fetch.PHP bind_result и выборка нескольких строк (массив)

$stmt = $this->conn->prepare("SELECT * from d WHERE d.id = ?"); 
$stmt->bind_param("i", 1); 
if($stmt->execute()){ 
    $stmt->bind_result($a, $b, $c); 
    $detail = array(); 
    while($stmt->fetch()){  

     $detail["a"] = $a; 
     $detail["b"] = $b; 
     $detail["c"] = $c; 
    } 

    $stmt->close(); 
    return $response; 
} else { 
    return NULL; 
} 

Над кодом работает, но он может возвращать только одну строку информации за раз.

Например, если оператор возврата:

a b c 
1 test test 
1 test1 test1 

он возвращает только

a: 1 
b: test1 
c: test1 

, где его должны быть:

{ 
    a: 1 
    b: test 
    c: test 
}, 
{ 
    a: 1 
    b: test1 
    c: test1 
} 
+0

Вы замены '$ detail' на каждой итерации цикла. Вам нужно добавить через '$ detail [] [" a "] = $ a' и т. Д. –

+0

Вы используете общий веб-хостинг или свою собственную коробку? Есть ли способ установить mysqlnd? – DarthCaniac

ответ

1

Вы overwritting их, вы могли бы сделать что-то вроде этого:

$detail = array(); 
while($stmt->fetch()) 
{   
    $temp = array(): 
    $temp["a"] = $a; 
    $temp["b"] = $b; 
    $temp["c"] = $c; 
    $detail[] = $temp; 
} 

Или непосредственно добавляя их другое измерение:

$detail = array(); 
while($stmt->fetch()) {   
    $detail[] = array('a' => $a, 'b' => $b, 'c' => $c); 
     // ^add another dimension 
} 
Смежные вопросы