我正在尝试使用以下代码从查询中获取结果并将其显示在tes.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>';
?>
我没有收到任何错误消息,但结果未显示,只是一个空白页。
我做错了什么?
答案 0 :(得分:5)
$stmt->bind_result($email,$nama,$alamat,$kota,$propinsi);
上述行将确保结果存储在您提供的变量中。 fetch()
function返回TRUE
或FALSE
- 查询是否成功,而不是实际结果。你需要像
return array(
'email' => $email,
'nama' => $nama,
'alamat' => $alamat,
'kota' => $kota,
'propinsi' => $propinsi);
答案 1 :(得分:1)
fetch()本身不返回数组,它返回一个布尔值,表示它有一行。 因此你可以这样做:
while($stmt->fetch()) {
//$email,$nama,$alamat,$kota,$propinsi are now filled
}
动态地将值绑定到数组中(与soulmerge的解决方案不同)需要更多的工艺。我创建了一个Database class来做到这一点。它充当包装器的周围mysqli预处理语句,将结果作为对象返回,其中select列充当对象的属性。如果你在类中取出强制转换为对象,它将根据你的需要返回数组。