PHP如何检查MySQL表中是否已存在字符串

时间:2014-01-29 21:30:42

标签: php mysql

我让用户输入所需的名称,然后在我制作之前检查数据库以查看它是否存在。但它不能正常工作,有时它会回复正确的东西,有时却不会。

$makeName = $_POST["userName"];
$nameFind = "SELECT userName FROM usertable WHERE userName = $makeName";
$nameCompare = mysqli_query($con, $nameFind);

if($nameCompare == false)
{
    echo "This is a new name";
}
else
{
    echo "Pick a new name please";
}

5 个答案:

答案 0 :(得分:3)

查询不会因为没有返回任何行而失败。使用mysqli_num_rows()查看是否匹配。

另外xkcd
xkcd

答案 1 :(得分:2)

不要这样做。

相反,

  1. 在“username”列上创建唯一约束。
  2. 插入用户所需的名称。
  3. 在所需名称已存在时捕获错误。
  4. 为什么呢?您的方法始终需要两次往返数据库,并不会导致错误。无论如何你必须陷入错误;插入语句有很多可能出错的地方。

答案 2 :(得分:0)

使用引号和转义:

"select userName FROM usertable WHERE userName = '" . mysqli_real_escape_string($makeName) . "'"

然后使用mysqli_num_rows()

$result = mysqli_query($query); $num_rows = mysqli_num_rows($result);

答案 3 :(得分:0)

if(mysqli_num_rows($nameCompare))
{
    echo "Pick a new name please";
}
else
{
    echo "This is a new name";
}

这将检查结果,如果有一行,它已经被使用过。

答案 4 :(得分:0)

无论如何你需要两个查询

 $username = mysqli_real_escape_string($con,$username);


 $query = "SELECT * FROM tbl_login WHERE username='$username'";
 $result = mysqli_query($con,$query)or die(mysqli_error());
 $num_row = mysqli_num_rows($result);

    $row=mysqli_fetch_array($result);
    if( $num_row ==1 ) {

        echo 'false';           
    }
    else{       
                $query_insert = "INSERT INTO login (username, password)VALUES ('$username','$password');";

            $result = mysqli_query($con,$query_insert) or die(mysqli_error());
            }