我在php中通过传递变量通过GET方法创建搜索查询。当变量为空时,它将传递如下查询:在php中搜索查询
SELECT * FROM table WHERE column_name = null
。
它显示错误(显而易见)。我想创建类似的查询。如果用户不从搜索选项中选择任何内容,则应该从该列中提取所有数据。
这是什么正确的逻辑? 谢谢。
代码:
if(isset($_GET['selPetType']) && $_GET['selPetType'] != '')
{
$searchParams['petType'] = $_GET['selPetType'];
$queryStr .= " PetType='" .$_GET['selPetType']. "'";
}
if(isset($_GET['txtPetBreed1']) && !empty($_GET['txtPetBreed1']))
{
$searchParams['breed'] = $_GET['txtPetBreed1'];
$queryStr .= " AND PetBreed1 ='". $_GET['txtPetBreed1'] . "'";
}
$clause1 = "SELECT * FROM pet WHERE $queryStr ORDER BY `Avatar` ASC LIMIT $startLimit, $pageLimit";
$totalRun1 = $allQuery->run($clause1);
如果$ _GET中没有任何内容正在传递,请不要执行任何SQL –
只需在SQL中不要使用“WHERE”。另外,请确保清理您的用户输入,您不需要任何SQL注入。 –
如果用户选择petBreed,那么它会给我错误。因为查询语句以AND开头......在第二个查询中没有WHERE。如果我打算将WHERE外延,那么如果用户选择2个搜索选项,那么WHERE将在查询中为2次... –