检查表中的mysql列是否为php中的重复项

时间:2013-11-24 16:00:10

标签: php mysql sql

我正在尝试检查重复项的用户名列,如果找到一个,则“应该使用用户名”应该回显。无论输入什么用户名“用户名是好的”总是回显...是什么导致了这一点,我该如何改变呢?

$username = preg_replace('#[^a-z0-9]#i', '', $_POST['usernamecheck']);
$sql = "SELECT * FROM riders WHERE username='$username' LIMIT 1";
$query = mysqli_query($connect, $sql); 
$uname_check = mysqli_num_rows($query);
if ($uname_check == 0) {
    echo '<strong style="color:#009900;">' . $username . ' is OK</strong>';
    exit();
} else {
    echo '<strong style="color:#F00;">' . $username . ' is taken</strong>';
    exit();
}

4 个答案:

答案 0 :(得分:4)

让我们以正确的方式调试它。如果您的代码不起作用,则 debug ;不只是猜测事情。要从PHP调试MySQL问题,您必须查看这些函数的returned值是什么?而不只是期待最好的情况。计算机科学不是猜测工作,对大多数事情来说都很准确。

第1步:

   // $connect = mysqli_connect("localhost", "my_user", "my_password", "world");

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

第2步:

    $username=mysqli_real_escape_string($connect,$username);
    $sql = "SELECT 1 FROM riders WHERE username='$username' LIMIT 1";
    if ($result=mysqli_query($connect, $sql)) {
     $uname_check=mysqli_num_rows($result);
    }
    else
    {
     printf("Error message: %s\n", mysqli_error($connect));
    }

第3步:

    echo intval($uname_check);

当你到达这里时,你会确切地知道出了什么问题。

之后,您可以继续使用if

if ($uname_check == 0)
{
    echo '<strong style="color:#009900;">' . $username . ' is OK</strong>';
}
else 
{
    echo '<strong style="color:#F00;">' . $username . ' is taken</strong>';
}
exit();

答案 1 :(得分:0)

更改逻辑:

$query = mysqli_query($connect, $sql) or die(mysqli_error($connect));

if ($query){ 
    if($uname_check > 0) {
    {
        echo '<strong style="color:#F00;">' . $username . ' is taken</strong>';
        exit();
    } else {
        echo '<strong style="color:#009900;">' . $username . ' is OK</strong>';
    }
}
else
{
    echo 'An error occured while querying the new username';
}

我们将能够理解你的sql查询是否合适。

答案 2 :(得分:0)

首先,在SQL请求之前尝试echo $username来检查值;

其次,尝试删除LIMIT 1,因为这样做是没用的,因为你确实阻止了重复创建,所以无论如何它都是0或1。

第三,试试这个:$username=preg_replace("#[^a-z0-9\.]#i", null, $_POST['usernamecheck']);

答案 3 :(得分:0)

我发现自己没有回答似乎有帮助:

$query = mysql_query($sql, $connect);

而不是:

$query = mysql_query($connect, $sql);