2

我正在尝试使用以下代码从查询中获取结果并将其显示在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;
}
?>

测试文件

<?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>';
?>

我没有收到错误消息,但没有显示结果,它只是一个空白页。

我做错了什么?

4

2 回答 2

5
$stmt->bind_result($email,$nama,$alamat,$kota,$propinsi);

上述行将确保结果存储在您提供的变量中。该fetch()函数返回TRUEFALSE- 查询是否成功,而不是实际结果。你需要类似的东西

return array(
    'email'    => $email,
    'nama'     => $nama,
    'alamat'   => $alamat,
    'kota'     => $kota,
    'propinsi' => $propinsi);
于 2009-03-04T13:39:06.837 回答
1

fetch() 本身不返回一个数组,它返回一个布尔值,指示它是否有一行。因此你可以这样做:

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

动态地将值绑定到一个数组中(与 soulmerge 的解决方案不同)需要更多的技巧。我创建了一个数据库类来做这件事。它充当 mysqli 准备语句的包装器,以将结果作为对象返回,其中选择列充当对象的属性。如果您将强制转换为类中的对象,它将根据需要返回数组。

于 2009-03-04T13:38:01.253 回答