PHP附加if语句阻止第一个语句
我有以下声明:PHP附加if语句阻止第一个语句,php,sql,Php,Sql,我有以下声明: if (isset($_POST['name'])) { $name = $_POST['name']; $sql = "SELECT * FROM patients WHERE name LIKE '{$name}' "; } elseif (isset($_POST['surname'])) { $surname = $_POST['surname']; $sql = "SELECT * FROM patients WHERE sur
if (isset($_POST['name'])) {
$name = $_POST['name'];
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' ";
} elseif (isset($_POST['surname'])) {
$surname = $_POST['surname'];
$sql = "SELECT * FROM patients WHERE surname LIKE '{$surname}' ";
} elseif (isset($_POST['pesel'])) {
$pesel = $_POST['pesel'];
$sql = "SELECT * FROM patients WHERE pesel LIKE '{$pesel}' ";
}
我有3张搜索表。但只有第一个名字起作用。其他人没有回应。如何更改?请检查是否未同时设置所有$\u POST[]变量。因为,$\u POST['name']是第一个变量,如果设置了它,则不会检查其他条件。请尝试以下操作:
if(isset($_POST['name'])||isset($_POST['surname'])||isset($_POST['pesel'])) {
$name = $_POST['name'];
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' or surname LIKE '{$surname}' or pesel LIKE '{$pesel}'";
}
您可以在单个查询中使用多个like条件
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' OR LIKE '{$surname}' OR LIKE '{$pesel}' ";
浏览器将发送请求中的输入字段,即使该字段为空
无法使用isset测试字符串是否为空。你需要!==也一样。顺便说一句,你需要搜索新事物-SQL注入。学习基本编程逻辑。如果/elseif/elseif/。。。当第一次成功匹配时,链将停止评估。您想做什么?这是对多个字段的复合搜索吗?当搜索字段为空时,如何满足第一个条件?我想在数据库中搜索名称形式:name、姓氏形式:name或peselform:pesel。因此,我有3个搜索字段,只有第一个名称有效。没有初始值,搜索表单为emptyO.K。现在我明白了逻辑。谢谢所有的答案
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' OR LIKE '{$surname}' OR LIKE '{$pesel}' ";