我让用户输入所需的名称,然后在我制作之前检查数据库以查看它是否存在。但它不能正常工作,有时它会回复正确的东西,有时却不会。
$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";
}
答案 0 :(得分:3)
查询不会因为没有返回任何行而失败。使用mysqli_num_rows()
查看是否匹配。
另外xkcd
答案 1 :(得分:2)
不要这样做。
相反,
为什么呢?您的方法始终需要两次往返数据库,并不会导致错误。无论如何你必须陷入错误;插入语句有很多可能出错的地方。
答案 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());
}