Php 如果输入值为空,则mysql显示全部
我有一个带有3个输入字段的查询,如果填写了一个或多个、两个或全部3个输入,我希望查询显示结果。所以,我尝试了使用is null,但它不起作用,或者我可以使用and/or查询来实现这一点Php 如果输入值为空,则mysql显示全部,php,mysql,Php,Mysql,我有一个带有3个输入字段的查询,如果填写了一个或多个、两个或全部3个输入,我希望查询显示结果。所以,我尝试了使用is null,但它不起作用,或者我可以使用and/or查询来实现这一点 $sql = "SELECT * FROM profiles"; $sql .= " WHERE (profilename = '". $_POST["profilename"] ."' OR profilename IS NULL) "; $sql .= " AND (ort = '". $_P
$sql = "SELECT * FROM profiles";
$sql .= " WHERE (profilename = '". $_POST["profilename"] ."' OR profilename IS NULL) ";
$sql .= " AND (ort = '". $_POST["ort"] ."' OR ort IS NULL) ";
$sql .= "AND (jahren = '" . $_POST["alter"] . "' OR jahren IS NULL) ";
非常感谢你的帮助 试试这个:
$sql = "
SELECT * FROM profiles
WHERE (profilename = '$_POST[profilename]' OR profilname = NULL)
OR (ort = '$_POST[ort]' OR ort = NULL)
OR (jahren = '$_POST[alter]' OR jahren = NULL)
";
建议:
$sql = "
SELECT * FROM profiles
WHERE (profilename = '$_POST[profilename]' OR profilname = NULL)
OR (ort = '$_POST[ort]' OR ort = NULL)
OR (jahren = '$_POST[alter]' OR jahren = NULL)
";
此$string=“Test$Test也”
优于$string=“Test”$测试。“还”代码>。
仅当您添加“
”时,对于”
“否”
已编辑。在发送查询之前,检查是否填写了任何输入字段:
if ( isset($_POST['profilename']) || isset($_POST['ort']) || isset($_POST['alter']) ){
$clause = "where ";
$conds = [];
if (!empty($_POST['profilename'])) $conds[] = "profilename = '{$_POST['profilename']}'";
if (!empty($_POST['ort'])) $conds[] = "ort = '{$_POST['ort']}'";
if (!empty($_POST['alter'])) $conds[] = "alter = '{$_POST['alter']}'";
if(count($conds) > 0){
$clause .= (count($conds) == 1)? $conds[0] : implode(' AND ',$conds);
$sql = "SELECT * FROM profiles " . $clause;
...
// sending query
}
}
我会将您的代码更新为以下内容:
$sql = "SELECT * FROM profiles WHERE 1=1";
/* We use 'WHERE 1=1' so that we can chain all of our filters after this
using 'AND' (or 'OR' in other situations) regardless of whether we are using the first of these filters or not */
if(isset($_POST["profilename"]) && $_POST["profilename"] != "")
$sql .= " AND profilename = '". $_POST["profilename"] ."'";
if(isset($_POST["ort"]) && $_POST["ort"] != "")
$sql .= " AND ort = '". $_POST["ort"] ."'";
if(isset($_POST["alter"]) && $_POST["alter"] != "")
$sql .= " AND jahren = '" . $_POST["alter"] . "'";
这将检查每个变量,然后再将其包括在查询中。
对于其他POST变量,只需复制并以相同格式粘贴它们
另一方面,我建议使用预先准备好的语句,而不是内联转储POST变量,以避免SQL注入攻击等
阅读此处的更多信息:不要使用“AND”和“use”或“OR”,因为即使填写了一个字段,您也希望显示结果。感谢您的输入。此sql部分有效。仅当我在ort和alter中输入内容时,它才起作用。但如果仅使用profilename等,则不起作用。