显示该用户名即使已存在也可用

时间:2016-01-01 10:44:22

标签: php mysql


现在我的它显示即使我的数据库中已存在该名称,用户名也可用
PHP

session_start();
$conne=mysqli_connect("localhost","username","","my_db");

$name = $_POST['name'];

$check_if_exists="SELECT * FROM names WHERE name = '$name'";
$count = mysql_num_rows($check_if_exists);
if($count != 0) { 

 $_SESSION['msg']="The name already exists. Please try another name";

} else {

$sql="INSERT INTO names(name) values('$name')";
if ($conn->query($sql) === TRUE) {
   $_SESSION['msg']="The name was inserted successfully";
  }
}

header("location:form.php");

不知何故,它显示该名称可用,它将插入en给出消息,该行动是成功的
HTML

<div class="msg"> 
  <?php if(isset($_SESSION['msg']))
{
    echo $_SESSION['msg'];
    unset($_SESSION['msg]);
}
?>
</div>

<form action="check_insert.php" method="post">

<input type="text" name="name" id="name" class="form-control" required> 
<input class="btn btn-default" type="submit" value="Voeg domein toe!">

</form>

2 个答案:

答案 0 :(得分:2)

您的代码中存在一些问题:

$check_if_exists="SELECT * FROM names WHERE name = '$name'";
$count = mysqli_num_rows($check_if_exists);

这应该是那样的(你错过了mysqli_query函数):

$check_if_exists="SELECT * FROM names WHERE name = '$name'";
$result = mysqli_query($check_if_exists);
$count = mysqli_num_rows($result);
if($count != 0) { 
//your code
}

这一行:

if ($conn->query($sql) === TRUE) 
{
    $_SESSION['msg']="The name was inserted successfully";
}

应该是这样的(你声明的连接变量为$ conne而不是$ conn ):

if ($conne->query($sql) === TRUE) 
{
    $_SESSION['msg']="The name was inserted successfully";
}

旁注:

我不认为,如果你不在按钮中使用name="submit"它会起作用。

答案 1 :(得分:1)

在您的代码中,您在致电mysqli_num_rows之前致电mysqli_querymysqli_num_rows计算mysqli_query返回的结果集上的行数,而不计算查询(文本)本身返回的行数。