【问题标题】:How to check If user exists in MySQL database?如何检查用户是否存在于 MySQL 数据库中?
【发布时间】:2013-12-31 11:02:02
【问题描述】:

如何检查数据库中是否已经存在用户?

我有变量$name = $user_profile['name'];它成功返回用户名。

这是我检查用户是否已存在于数据库中的代码部分。

$user_profile = $facebook->api('/me');
$name = $user_profile['name'];
$mysqli = new mysqli("asd", "asdf", "pw", "asdssst");
/* Create the prepared statement */
$stmt = $mysqli->prepare("SELECT COUNT(*) AS num FROM myTable WHERE userName = ?") or die("Prepared Statement Error: %s\n" . $mysqli->error);
/* Bind results to variables */
$stmt->bind_param('s', $name);
/* Execute the prepared Statement */
$stmt->execute();
$data = $stmt->fetch();
if ($data['num'] > 0) {
    echo "bad";
    print "user already exists\n";
} else {
    echo "good";
    $apiResponse = $facebook->api('/me/feed', 'POST', $post_data);
    print "No user in database\n";
}
/* Close the statement */
$stmt->close();

无论用户是否在数据库中,它总是返回:good No user in database。这意味着$data['num'] 始终是0。

附:我知道我需要使用 FB 用户 ID 而不是用户名,但在这种情况下我需要这样做。

【问题讨论】:

标签: php mysql select mysqli


【解决方案1】:

检查变量是否有结果。这样的事情应该可以工作。

//So you have your variable $name here + it returns a value
$name = $user_profile['name'];
//You can put this if statement anywhere below it
if($name > 1){
//log user in
}

【讨论】:

  • 谢谢你的回答,但是我误解了这部分代码我需要在哪里使用?
  • 你需要在得到查询结果之后输入这种代码。
  • 你能更新你的答案吗?它在我的代码中的样子好吗?当然如果你有时间。
  • 谢谢你的回答,但是你在这行//log user in是什么意思我需要在这里使用什么?如果我使用echo $name它成功返回FB用户名。
  • 而且名称是字符串,我如何检查它是否是> 0?
【解决方案2】:

我会用这样的东西

$mysqli = new mysqli('',"","","");
$query = 'SELECT username FROM user WHERE username = ?';
$stmt = $mysqli->prepare($query);
$name = 'asdf';
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($user);
if($stmt->fetch())
   echo 'Username '.$user. ' exists';
else 
  echo 'User doesnt exists';
$stmt->close();

【讨论】:

  • 谢谢你的回答,但在这两种情况下我都会得到User doesnt exists nevermind 如果用户被写入数据库。
  • 也许这行不正确$stmt->bind_result($user); ?它从哪里获得 $user 价值?
  • bind_result 用于将数据绑定到变量中。例如,如果您的查询请求两个参数,例如“SELECT username, password...”,那么您告诉 bind_result($user,$password) 将该数据保存到相应的变量中。
  • 但在代码中我还有其他变量 $user 包含 FB 用户 ID
  • 没关系。我正在使用我发布的代码来满足我的需要并且它有效,我不确定你为什么不这样做。问题一定出在其他地方
猜你喜欢
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 2021-12-27
  • 2013-08-31
  • 2021-12-28
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多