现在我的它显示即使我的数据库中已存在该名称,用户名也可用
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>
答案 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_query
。 mysqli_num_rows
计算mysqli_query返回的结果集上的行数,而不计算查询(文本)本身返回的行数。