Php 用于获取多个表单输入值的if语句的替代语句

Php 用于获取多个表单输入值的if语句的替代语句,php,forms,if-statement,Php,Forms,If Statement,我有一个HTML表单供用户从中选择国家、地区、卧室号码和价格 <form action="" enctype="" method="POST"> <p>Property Search <select name="search_country"> <option value="">Select a country</option> <option value="uk">UK</option> <o

我有一个HTML表单供用户从中选择国家、地区、卧室号码和价格

<form action="" enctype="" method="POST">
<p>Property Search
<select name="search_country">
  <option value="">Select a country</option>
  <option value="uk">UK</option>
  <option value="france">France</option>
</select>
<select name="search_region">
  <option value="">Select a region</option>
  <option value="london">London</option>
  <option value="birmingham">Birmingham</option>
  <option value="paris">Paris</option>
  <option value="calais">Calais</option>
</select>
<select name="search_bedroomnumber">
  <option value="">Select number of bedrooms</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
</select>   

<input type="submit" name="search_submit" value="Search" />
有很多选择,这将需要大量的if语句,我确信有一种更有效的方式,我没有看到(这里的程序员非常业余)

如有任何建议,将不胜感激。谢谢。

我必须看一看,您可以在转义后将$\u POST中的所有变量转换为一个变量,然后在查询中使用它

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$country = $mysqli->real_escape_string($_POST['search_country']);
$region = $mysqli->real_escape_string($_POST['search_region']);
$bedroom = $mysqli->real_escape_string($_POST['search_bedroomnumber']);

$sql = "SELECT * FROM properties 
WHERE country = '$country' 
AND region = '$region' 
AND bedroomnumber = $bedroom 
ORDER BY price ASC" ;
然后您可以使用这个$sql

确保在诸如检查空输入等位置也有其他检查。

必须注意,转义后可以将$\u POST中的所有变量放入变量中,然后在查询中使用它

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$country = $mysqli->real_escape_string($_POST['search_country']);
$region = $mysqli->real_escape_string($_POST['search_region']);
$bedroom = $mysqli->real_escape_string($_POST['search_bedroomnumber']);

$sql = "SELECT * FROM properties 
WHERE country = '$country' 
AND region = '$region' 
AND bedroomnumber = $bedroom 
ORDER BY price ASC" ;
然后您可以使用这个$sql

确保在检查空输入等位置也有其他检查。

PDO就是答案

过滤器\u输入结合使用
可获得最大效果

收集所有参数:(添加消毒)

编写您的查询:

$sql = 'SELECT * FROM properties 
WHERE country = :country 
AND region = :region 
AND bedroomnumber = :bedroomnumber 
ORDER BY price ASC';
准备您的查询

$stmt = $db->prepare($sql);
绑定参数:

$stmt->bindParam(':country', $country);
...
执行并获取:

$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
PDO就是答案

过滤器\u输入结合使用
可获得最大效果

收集所有参数:(添加消毒)

编写您的查询:

$sql = 'SELECT * FROM properties 
WHERE country = :country 
AND region = :region 
AND bedroomnumber = :bedroomnumber 
ORDER BY price ASC';
准备您的查询

$stmt = $db->prepare($sql);
绑定参数:

$stmt->bindParam(':country', $country);
...
执行并获取:

$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

你根本不需要那些。只需将所有预期的GET或POST值分配给一个变量,并在转义后将这些变量放入SQL代码中。

您根本不需要这些变量。只需将所有预期的GET或POST值分配给一个变量,并在转义后将这些变量放入SQL代码。

$\u POST
中的值与数据库中的值相同?顺便说一句,您有语法错误。另外,我认为您的做法是错误的。无论如何,你有下面的答案。
$\u POST
中的值与数据库中的值相同?顺便说一句,你有语法错误。另外,我认为你的做法是错误的。无论如何,你有下面的答案。