谁能告诉我如何计算select prepare语句的返回值?

时间:2016-05-29 22:56:18

标签: php mysqli

问题是,我有一个如下所示的声明,我在我的Android应用程序的服务器端使用它

$statement = mysqli_prepare($con, "SELECT * FROM accounts WHERE email = ? OR username = ?");
mysqli_stmt_bind_param($statement, "ss", $email, $username);
$result = mysqli_stmt_execute($statement);
$rows = mysqli_stmt_fetch($result);

我想知道有多少行是从它回来的,所以我可以知道数据库中是否已经有相同的用户名和电子邮件的数据,但它不起作用。

如何解决这个问题?并提前感谢。

2 个答案:

答案 0 :(得分:0)

  

我想知道有多少行回来了

不,你没有。那是一个错误的目标。

使用数据库时,您应始终请求所需的确切数据,而不是在客户端进行某些计算。

因此,在您的情况下,您需要用户信息 - 所以选择该信息。表示您可以使用此非常用户信息来判断您的查询是否返回任何内容。

$statement = mysqli_prepare($con, "SELECT * FROM accounts WHERE email = ? OR username = ?");
mysqli_stmt_bind_param($statement, "ss", $email, $username);
mysqli_stmt_execute($statement);
$result = mysqli_get_result($statement);
$user = mysqli_fetch_assoc($result);

//now you have the very $user variable to tell whether anything was found
if ($user) {
  //user exists
}

答案 1 :(得分:-1)

您唯一缺少的是将num_rows函数与生成的mysqli对象一起使用:

$statement = mysqli_prepare($con, 
    "SELECT * FROM accounts WHERE email = ? OR username = ?");
mysqli_stmt_bind_param($statement, "ss", $email, $username);
$result = mysqli_stmt_execute($statement);

$numbRows = $result->num_rows;

//printing the result:
echo "number of rows = {$numbRows}<br>";