PHP MySQL查询返回NULL

我有一个如下所示的MySQL表:

index  |  tag  |  posts
-------------------------
  1    | cats  |   9,10
  2    | a cat |   9,10
  3    | kitty |   9,10
  4    | meow  |   9,10

我试图只返回匹配搜索查询的行。 我使用简单的?search=cats传递了搜索参数。 这是我正在使用的PHP:

$search = $_GET['search'];
$query  = mysql_query("SELECT * FROM tags WHERE tag = '$search'");
echo(mysql_num_rows($query));
$result = mysql_fetch_array($query);
$print  = $result['posts'];
echo($print);

然而, mysql_num_rows($query)输出0, $print返回NULL。 我可以用($print == "")来检查它,它的计算结果为TRUE, mysql_num_rows($query)返回4.我试图设置搜索查询的东西不在表中,并且它按照预期返回FALSE。 我也尝试删除WHERE tag = '$search'并且它返回表格。

有我忽略的东西吗?

编辑

接受了每个人的建议,我现在使用的代码是:

$search = mysql_real_escape_string($_GET['search']);
var_dump($search); //prints   string(4) "cats"   just like it should
$queryText = "SELECT * FROM tags WHERE tag = '%".$search."%'";
echo($queryText); //SELECT * FROM tags WHERE tag = '%cats%'
$query  = mysql_query($queryText) or die(mysql_error()); //no error
$rows   = mysql_num_rows($query); //this returns 0 and I know it should match 1 row
echo('rows: '.$rows);
$result = mysql_fetch_array($query);
$print  = $result['posts'];
echo($print); //empty

仍然有同样的问题。 如果不匹配,则mysql_query将重新调用NULL而不是行或为FALSE。

(将来我会使用mysqli API,但是我想用mysql来完成这个项目。感谢您的建议和建议)


在参考上述编辑之后,确定如下,这里是解决方案

使用通配符“%”时使用“LIKE”而不是“=”

所以你现在的查询应该是

$queryText = "SELECT * FROM tags WHERE tag LIKE '%" . $search . "%'";

[我在本地系统上创建了完全相同的数据库,并运行相同的代码,完成上述更改后,它按预期运行]


现在试试这个代码。

记住,当你想用PHP调试某些东西时,更快的方式是var_dump不回显。 此外,您应该避免使用mysql_api,因为它们已被弃用,请在PHP.net上使用PDO代替PDO

var_dump($_GET); // Just for debuggin if as something

$search = $_GET['search'];
$query  = mysql_query("SELECT * FROM tags WHERE tag = '".mysql_real_escape_string($search)."'");
// echo(mysql_num_rows($query));
$result = mysql_fetch_array($query);
var_dump($result);
//$print  = $result['posts'];
//echo($print);

$search = $_GET['search'];
echo $select_query="SELECT * FROM tags WHERE tag = '".mysql_real_escape_string($search)."'";
$query  = mysql_query($select_query);
echo(mysql_num_rows($query));
while($result = mysql_fetch_array($query))
{
  print_r($result);
}
链接地址: http://www.djcxy.com/p/58869.html

上一篇: PHP MySQL query returning NULL

下一篇: Set variable in if statement expression