1

次のコードを使用できない場合に、mysqlが正常に実行され、結果を返したことを確認するための最良の方法は何ですか。

$db = dbConnect();
//begin prepared statements to search db
$stmt = $db->prepare("SELECT email,authentication,email_confirm,externalid,password,id, admin FROM users WHERE email=?");
$stmt->bind_param('s',$email);
$stmt->execute();
$result = $stmt->get_result();
if (!$result){
  //error statement
} if (!(mysqli_num_rows($result)==0)){
  //action to perform
} else {
  // no result returned
}

スクリプトでget_resultを何度も使用していましたが、ホスティングプロバイダーにmysqlndドライバーがないため、多くのコードを書き直す必要があります。bind_resultとfetch()に制限されていることは知っていますが、私の考え方が最初に行った方法に固執しているため、コードを書き直すのに少し助けが必要です。

また、PDOではなくmysqliを使用しています。

4

1 に答える 1

1

Mysqlifetch()関数は、次の3つの値のいずれかを返します。

  • TRUE-成功。データが取得されました
  • FALSE-エラーが発生しました
  • NULL-行/データが存在しないか、データの切り捨てが発生しました

これは、クエリを次のように設定できることを意味します。

$db = dbConnect();
$query = "SELECT email,authentication,email_confirm,externalid,password,id, admin FROM users WHERE email=?";
$stmt = $db->prepare();
$stmt->bind_param('s',$email);
$stmt->execute();
$stmt->bind_result($email,$auth,$email_confirm,$externalid,$password,$id,$admin);

// Will only execute loop if returns true
$record_count = 0;
while($result = $stmt->fetch())
{
    // Increment counter
    $record_count++;

    // Do something with bound result variables
    echo("Email is $email");
}

// After the loop we either ran out of results or had an error
if($result === FALSE)
{
    echo("An error occurred: " . $db->error());
}
elseif($record_count == 0)
{
    echo("No records exist.");
}
于 2012-11-02T18:02:21.450 に答える