【问题标题】:Database not checking if username is free [closed]数据库不检查用户名是否免费[关闭]
【发布时间】:2013-06-22 07:21:52
【问题描述】:

好的,我还有一个问题,现在代码已经修复:

{ 
   //Check if user already exists 
    $un_check = mysql_query("SELECT Username FROM users WHERE Username = '$un'");  
    if(mysql_num_rows($un_check) >0) {
echo "Username already exists";
}
else{
 // Username Free
}

但数据库仍然允许用户名相同。 另外,即使它说“用户名已经存在”,我仍然创建帐户吗?

有什么想法吗?

【问题讨论】:

  • 你确定用户名永远是'POSTVALUE'吗?
  • 你的mysql_num_rows($un)不应该是mysql_num_rows($un_check)吗??
  • 为什么不在Username 列上设置UNIQUE 约束?
  • 请理解 Stackoverflow 不是您个人的 bugtracker。而是学习如何调试 PHP 代码。你一生中会不止一次这样做。
  • @PedroEstrada 我已经尝试过了,但出现错误。

标签: php html mysql xampp


【解决方案1】:

似乎拼写错误将$un 更改为$un_check

if(mysql_num_rows($un_check) >0) {...

始终让您的 PHP 错误至少在开发环境中打开,

error_reporting(E_ALL);

注意: Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

  • 对错字问题和答案的零容忍。您甚至没有指出如何启用错误消息。
  • 我现在已经修好了。感谢大家。 (:
  • 很高兴为您提供帮助。不过不要忘记检查我的笔记:)
  • 粗体和下划线在,竖起大拇指,希望很快再见到你。
  • @Rikesh 感谢您的信息!
【解决方案2】:

试试这个

$un_check = mysql_query("SELECT Username FROM users WHERE Username = 'POSTVALUE'");  
if(mysql_num_rows($un_check) >0) {
   echo "Username is taken";
}
else{
 // Username Free
}

【讨论】:

  • 这修正了我的错误! (谢谢)但它仍然不让我知道用户名是否存在。
  • 谢谢!现在已经修好了。 (:在我将 postvalue 更改为 $un 后,这成功了。
【解决方案3】:

改变这个:-

if(mysql_num_rows($un) >0)

if(mysql_num_rows($un_check) >0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2021-03-20
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多