使用PHP不返回结果的简单MYSQL查询

使用PHP不返回结果的简单MYSQL查询,php,mysql,Php,Mysql,我正在尝试使用PHP运行一个简单的select语句,我肯定会有结果,但在运行页面时我没有收到任何数据 $username = 'racarric'; $username_check = "SELECT * FROM users WHERE username = '$username'"; if (mysql_num_rows($username_check) > 0) { echo "Username is already in use"; //break; } else

我正在尝试使用PHP运行一个简单的select语句,我肯定会有结果,但在运行页面时我没有收到任何数据

$username = 'racarric';
$username_check = "SELECT * FROM users WHERE username = '$username'";

if (mysql_num_rows($username_check) > 0) {
    echo "Username is already in use";
    //break;
}
else {
    echo "No users have this username";
}

在我的数据库中,我有一个用户名为“racarric”的记录。

这里有很多问题。这些是大的

首先,这是您没有得到结果的(主要)原因,您实际上没有执行查询。您存储了要运行的查询的字符串版本,但从未使用执行它,例如。你需要这样的东西:

// ...
$username_check = "SELECT * FROM users WHERE username = '$username'";

$query = mysql_query($username_check); // this is the new line

if (mysql_num_rows($query) > 0) { // note the parameter change
// ...
第二个,您正在使用
mysql
库。正如在中的大红色框中所解释的,您。mysql的
mysql.*
函数已经过时,而且不安全——它们已经完全从现代版本的PHP(7.0及更高版本)中删除。使用或代替


第三,您对以下内容非常开放。您需要使用准备好的语句,而不是将变量连接到查询中。请参阅。

如果您尚未执行查询,请不要使用
mysql\uquot
函数。这只是一个字符串,看看并了解它是如何工作的。感谢您的回复。我知道SQL注入的部分,现在并不太担心。这是一个相当简单的学校作业。奇怪的是,我上学期在学院上了一门课,教MYSQL/PHP使用MYSQL_*函数,我很震惊他们没有告诉我们不再支持它。谢谢你的回复。我应该可以从这里拿到。编辑:在看过一些旧文件后,我们学习了mysqli。我一定是忘记了,用了太多的资源来帮助完成这项任务。@Andrew_114我很高兴这对我有帮助。请记住选择答案旁边的复选标记!而且,他们教你使用
mysql.*
也是不可原谅的。这些功能已经被弃用了4年,并在7.0中被完全删除,而7.0在近2年前才正式提供。你可能想为你的导师标记这个。@Andrew_114啊,好的。那更好!很容易错误地键入
mysql.
,而忽略
i
。如果您可以控制机器,最好禁用
mysql
扩展。这样,使用旧函数的代码甚至不会运行,这迫使您在使用
mysqli\ux…
或PDO时保持一致。