【问题标题】:binding results into php array将结果绑定到 php 数组中
【发布时间】:2010-10-11 06:17:51
【问题描述】:

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

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

我做错了什么?

【问题讨论】:

  • 粘贴代码时,请使用编辑器中的代码功能(二进制图标)
  • @nduplessis:这个问题没有错,让我们保持高效。
  • “空白文档”的源代码中是否有 3 个 &lt;br&gt; 标签?如果没有,可能会有一个您看不到的异常。尝试检查您的 apaches error.log。也许缺少 mysqli 扩展?

标签: php mysql mysqli prepared-statement


【解决方案1】:
$stmt->bind_result($email,$nama,$alamat,$kota,$propinsi);

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

return array(
    'email'    => $email,
    'nama'     => $nama,
    'alamat'   => $alamat,
    'kota'     => $kota,
    'propinsi' => $propinsi);

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多