我知道这可能是重复的:
php - MYSQLI_NUM_ROWS ALWAYS RETURNING 0
php - mysqli_num_rows() is always returning 0
事情是他们都没有给我一个问题的答案。
这是我的代码的示例代码,其语法与我使用的相同。
的index.html
<html>
<head><title>GAS - Give Away System - Create User</title></head>
<body>
<script src="jquery.js"></script>
<input type="text" placeholder="Username" id="uname" /><br><br>
<p id="errors"></p>
<script>
$(document).ready(function(){
$.ajaxSetup({cache:false});
setInterval(function(){
$("#errors").load("php/errorchecking.php?c=username&v="+document.getElementById('uname').value);
}, 500);
});
</script>
</body>
</html>
的PHP / errorchecking.php
<?php
$con = mysqli_connect('localhost', 'root', '', 'gas');
if(isset($_GET['c']) && isset($_GET['v'])){
echo 'Current value: ', $_GET['v'], '<br>This value is set for: ', $_GET['c'], '<br><br>';
if($_GET['c']==="username"){
if($_GET['v']===null){
echo "Sorry, this username is empty! Please write a username!";
}else{
// I know this is open for SQL Injection, it's not in my worries.
$query = "SELECT `username` FROM `users` WHERE `username` ='{$_GET['v']}'";
$sql = $con->query($query);
if(mysqli_num_rows($sql) > 0){
echo "Sorry, this username is already in use! Please choose something else";
}else{
echo "Username avaible!"; //This is line 17
}
}
}
}else{
echo 'This is an invalid form!';
}
?>
现在假设我的桌面上有一个名为User15的用户名,而某人的输入与 php / errorchecking.php 中显示消息"Username available!"
完全相同行: 17
为什么这样做?由于它已经是一个名为User15
的用户,因此应显示的是"Sorry, this username is already in use! Please choose something else"
感谢您花时间帮助我! CECILIE。
答案 0 :(得分:3)
这是一种错误的查询语法。您需要使用反向标记,而不是'
s:
$query = "SELECT username FROM `users` WHERE 'username'='".$_GET['v']."'";
//-------------------------------------------^--------^
将其更改为:
$query = "SELECT `username` FROM `users` WHERE `username`='".$_GET['v']."'";
注意:强>
``
- 对于列。''
- 适用于值。答案 1 :(得分:2)
您必须从查询中删除列名周围的'
(单引号),如下所示: -
$query = "SELECT `username` FROM `users` WHERE `username`='".$_GET['v']."'";
注意: - 而不是'
(单引号)使用反向标记。因为单引号('
)用于column-name
以及table-name
使用的值和反向标记。谢谢