связывание результатов в массив php - PullRequest
2 голосов
/ 04 марта 2009

Я пытаюсь использовать следующий код, чтобы получить результаты запроса и отобразить их на странице tes.php.

db.inc.php

<?php
function db_connect()
{
    $handle=new mysqli('localhost','rekandoa','rekandoa','rekandoa');
 if (!$handle)
{
       return false;
   }
return $handle;
}

function get_member()
{
    $handle=db_connect();
$sql="Select email,nama,alamat,kota,propinsi from users where email=?";
    $stmt=$handle->prepare($sql);
  $mail='yonghan79@gmail.com';
    $stmt->bind_param("s",$mail); 
 $stmt->execute();
  $stmt->bind_result($email,$nama,$alamat,$kota,$propinsi);
  $result=$stmt->fetch();
    return $result;
}
?>

tes.php

<?php
error_reporting(E_ALL & ~E_NOTICE);
include('db.inc.php');
$w=get_member();
echo $w['member_id'];
echo '<br>';
echo $w['email'];
echo '<br>';
echo $w['status'];
echo '<br>';
?>

У меня нет сообщения об ошибке, но результаты не отображаются, это просто пустая страница.

Что я сделал не так?

Ответы [ 2 ]

5 голосов
/ 04 марта 2009
$stmt->bind_result($email,$nama,$alamat,$kota,$propinsi);

Приведенная выше строка обеспечит сохранение результатов в указанных вами переменных. Функция fetch() возвращает TRUE или FALSE - был ли запрос успешным, а не фактическим результатом. Вам нужно что-то вроде

return array(
    'email'    => $email,
    'nama'     => $nama,
    'alamat'   => $alamat,
    'kota'     => $kota,
    'propinsi' => $propinsi);
1 голос
/ 04 марта 2009

Сама fetch () не возвращает массив, она возвращает логическое значение, указывающее, получил ли он строку. Таким образом вы можете сделать:

while($stmt->fetch()) {
     //$email,$nama,$alamat,$kota,$propinsi are now filled
}

динамическое связывание значений в массив (в отличие от решения soulmerge) занимает немного больше времени. Я создал Класс базы данных , который делает именно это. Он действует как оболочка для подготовленных операторов mysqli, возвращающих результаты в виде объектов, в которых столбцы выбора действуют как свойства объекта. Если вы возьмете приведение к объекту в классе, он вернет массивы так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...