PHP—组织MySQL查询以创建条件表单的最有效方法

PHP—组织MySQL查询以创建条件表单的最有效方法,php,mysql,Php,Mysql,因此,我创建了一个条件表单,其中选项根据先前的选择填充 例如,考虑一个基本的例子: 国家=[列表] 城镇=[列表] 街道=[列表] 人们可能希望查询他们的数据库,找到与所选国家相对应的所有城镇 一旦选择了一个城镇,他们就会希望查询他们的数据库,以找到与所选城镇对应的所有街道 然而,我不确定组织MySQL调用的最佳方式 例如,我创建了一个通过XMLrequest触发的函数,例如: function getTowns($country){ global $conn; $sql = "S

因此,我创建了一个条件表单,其中选项根据先前的选择填充

例如,考虑一个基本的例子:

国家=[列表]

城镇=[列表]

街道=[列表]

人们可能希望查询他们的数据库,找到与所选国家相对应的所有城镇

一旦选择了一个城镇,他们就会希望查询他们的数据库,以找到与所选城镇对应的所有街道

然而,我不确定组织MySQL调用的最佳方式

例如,我创建了一个通过XMLrequest触发的函数,例如:

function getTowns($country){

global $conn;

$sql = "SELECT distinct town from example_table where country=".$country;
$rs = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($rs);

return $row;
}
然后,我可以使用返回的行填充towns选项

但是,我不确定这是否是最有效的,因为我认为一旦选择了城镇,我需要另一个功能来选择街道:

function getStreets($town){

global $conn;

$sql = "SELECT distinct street from example_table where town=".$town;
$rs = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($rs);

return $row;
}
一个表单中有许多输入,这将产生许多函数,因此这让我质疑我最初想法的效率

因此,我问:对于具有多个选项的条件表单,是否有更有效的方法从MySQL获取数据

理想情况下,我在想是否有可能一次从数据库中获取所有城镇及其相关街道,这样一旦选择了城镇,街道中的选项将自动填充,而无需进一步查询数据库


希望这是有意义的,我对编程和堆栈溢出非常陌生,所以希望这一切正常。

您的思路正确。如果您试图一次发送所有内容,那么代码将变得更加复杂,维护起来也更加困难,并且会占用更多的网络带宽


您的查询容易受到SQL注入攻击。您可以通过使用参数化查询来解决此问题

这个问题的解决方案本质上是主观的。解决这个问题的方法因程序员而异。 从我的角度来看,if应该取决于表的数据大小

如果是一小部分数据,那么加载联合收割机数据的方法将更有效。您可以将其存储在JSON中,然后使用JS函数进行处理,而不是每次选择town时都进行AJAX调用。 这将保存API调用和SQL查询

如果数据大小比前面的方法大,那么可以增加页面的加载时间,因此最好在服务器端创建多个函数,并对每个选择进行AJAX调用


如果您使用的是第二种方法,请不要将输入值直接传递给将打开SQL注入漏洞的查询。

使用prepareds语句—请参阅“谢谢”,非常有用—其他答案只需稍微详细一点,但投票结果为:)