我坚持一些愚蠢的事情...... 我的表只有一列。 我想检查是否有一些值,我从url(方法$ _GET)
获得 mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());
$row=htmlspecialchars($_GET['row']);
$query = @mysql_query ("SELECT * FROM table WHERE row=$row");
if ($result = @mysql_fetch_array($query)) {
echo "There is that row";
}
else {
echo "There is not that row";
}
你能告诉我什么是错的吗?
答案 0 :(得分:1)
正确的方法是检查结果集是否包含任何行。您可以使用 mysql_num_rows() :
执行此操作if (mysql_num_rows($query)>0) {
echo "There is that row";
}
else {
echo "There is not that row";
}
此外,如果您的$row
是一个字符串,则应将其用单引号括起来。
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:0)
强制性的“你应该使用PDO”评论。
你没有说它是什么类型的字段,也许它是一个文本字段所以它需要在引号中。
$query = @mysql_query ("SELECT * FROM table WHERE row='" . $row . "');
此外,如果您删除@,您可能会看到某种错误
$query = mysql_query ("SELECT * FROM table WHERE row='" . $row . "') or die(mysql_error());
答案 2 :(得分:0)
你似乎混合了行和列。查询SQL数据库时,通常在WHERE语句后指定clumnName="value"
。对于具有一个名为“row”的列的表,您具有有效的语法。
您的查询可能存在问题,因为您没有转义您的参数,因此它将失败它$ row实际上有任何引号。使用PDO而不是不再维护的mysql_
函数可以避免这种情况。相反地查询你的表:
$query = @mysql_query("SELECT * FROM gvar WHERE gvarebi='{addslashes($row)}'");
要实际检查是否有任何结果,最好使用mysql_num_rows
,因为它将返回指定查询的行数。因此,请使用以下代码更新代码:
if (mysql_num_rows($query) > 0) {
echo "row exists";
} else {
echo "row does not exists";
}