如何检查php中的空url参数

时间:2011-09-03 06:28:21

标签: php

我在php和phonegap工作。我正在使用url向php页面发送标题,歌曲类别。现在我想根据标题和类别选择歌曲,如果它们都在网址中提供。如果url仅提供标题,则必须仅根据标题进行搜索。如果url仅提供类别,则搜索必须仅作为类别的基础。

**this is code which i am trying**

$titletosearch = $_GET["title"];
$categorytosearch = $_GET["category"];
$artisttosearch = $_GET["artist"];
if($titletosearch !=" " && $titletosearch!=" ")
$rs = mysql_query("SELECT title,price,date,category FROM music where title like '%$titletosearch%' or category like '%$categorytosearch%' ")  or die ("invalid query");
elseif($titletosearch =="" && $titletosearch!=" ")
$rs = mysql_query("SELECT title,price,date,category FROM music where category like '%$categorytosearch%' ")  or die ("invalid query");
elseif($titletosearch !=" " && $titletosearch=="")
$rs = mysql_query("SELECT title,price,date,category FROM music where title like '%$titletosearch%' ")  or die ("invalid query");

我的代码出现问题是每当我只在url中提供标题或类别时,它会搜索这么多记录。如果我提供标题和类别,它意味着它正常工作。如果没有给出任何一个,那么我提供了很多结果记录。

请帮助我如何处理这些条件。 ?

提前谢谢。

4 个答案:

答案 0 :(得分:5)

最近的英语。见empty()

if (empty($_GET['title'])) { echo "It's Empty!!!"; }

除此之外,您应该使用HTML5中的required=属性强制执行表单(如果您使用的是HTML5)和/或使用JavaScript来确保表单有效。

答案 1 :(得分:1)

1)而不是简单地获取$ _GET [“key”]总是将它包装在trim()方法中以消除任何额外的字符。

2)默认情况下,如果你说任何输入是空的,那么'%%'搜索会贪婪地匹配任何内容。您可以根据可用的输入构建SQL语句并使用TOP功能;例如:SELECT TOP 100 title,price .. etc.等,这将始终限制从后端返回的记录。 TOP通常是数据库中提供的构造,因此只需查找SELECT语句文档就可以了。

3)如果你遵循2),最后只会有一个mysql_query语句

祝你好运

答案 2 :(得分:0)

$w = array();
if (!empty($_GET["title"])) {
  $w[] = "title LIKE '%".mysql_real_escape_string($_GET["title"])."%'";
}
if (!empty($_GET["category"])) {
  $w[] = "category LIKE '%".mysql_real_escape_string($_GET["category"])."%'";
}
// and so on

$where = '';
if (count($w)) $where = "WHERE ".implode(' AND ',$w);
$sql = "SELECT title,price,date,category FROM music $where";
$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);

答案 3 :(得分:-2)

您可以使用isset()

你也可以检查它是否为空()

How to check if $_GET is empty?