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(),但我需要一些帮助来重写代码,因为我的思维方式停留在我第一次这样做的方式上。

我也在使用 mysqli 而不是 PDO。

4

1 回答 1

1

Mysqlifetch()函数将返回 3 个值之一:

  • 真——成功。数据已提取
  • 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 回答