我正在尝试使用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'。
答案 0 :(得分:2)
你这里有很多问题。这是最重要的。
首先,这是您未获得结果的(主要)原因,您实际上并未执行查询。您存储要运行的查询的字符串版本,但您永远不会使用mysql_query()
执行它。你需要这样的东西:
// ...
$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
库。正如the documentation link above中的大红色框中所述,您shouldn't be using mysql_*
functions at all。 mysql_*
函数已过时,deprecated和不安全 - 它们已完全从现代版本的PHP(7.0及更高版本)中删除。请改用MySQLi
或PDO
。
第三次,您对SQL injection持开放态度。您需要使用预准备语句,而不是将变量连接到查询中。请参阅How can I prevent SQL injection in PHP?。