带有一列的SQL - 检查行是否存在

时间:2014-04-01 12:01:36

标签: php mysql sql

我坚持一些愚蠢的事情......      我的表只有一列。      我想检查是否有一些值,我从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";
 }

你能告诉我什么是错的吗?

3 个答案:

答案 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,并使用PDOMySQLi - 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";
}