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

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

エラー メッセージは表示されませんが、結果は表示されません。空白のページです。

私は何を間違えましたか?

4

2 に答える 2

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

上記の行により、指定した変数に結果が確実に格納されます。fetch()関数TRUEはor FALSE- 実際の結果ではなく、クエリが成功したかどうかを返します。次のようなものが必要です

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 のソリューションとは異なり)、もう少し工夫が必要です。まさにそれを行うDatabase クラスを作成しました。これは、mysqli の準備済みステートメントの周りのラッパーとして機能し、選択列がオブジェクトのプロパティとして機能するオブジェクトとして結果を返します。クラス内のオブジェクトへのキャストを取り出すと、必要に応じて配列が返されます。

于 2009-03-04T13:38:01.253 に答える