所以我正在创建一个条件表单,其中选项根据先前的选择填充。例如,考虑一个基本示例:国家 = [列表]城镇 = [列表]街道 = [列表]人们可能想查询他们的数据库以找到与所选国家相对应的所有城镇。一旦选择了一个城镇,他们就会想要查询他们的数据库以找到与所选城镇对应的所有街道。但是,我不确定为此组织 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;}然后我可以使用返回的行填充城镇选项。但是,我不确定这是否是最有效的,因为我认为一旦选择了城镇,我就需要有另一个功能来选择街道: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 获取具有多个选项的条件形式的数据?理想情况下,我在想是否有可能一次从数据库及其相关街道中获取所有城镇,这样一旦选择了一个城镇,街道中的选项就会自动填充,而无需进一步查询数据库。希望这是有道理的,我对编程和堆栈溢出还很陌生,所以希望这没问题。
2 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
这个问题的解决方案本质上是主观的。解决这个问题的方法可能因程序员而异。从我的角度来看,是否应该取决于你的表的数据大小。
如果它是一小组数据,那么您加载组合数据的方法会更有效。您可以将它存储在 JSON 中,然后使用 JS 函数处理它,而不是每次选择城镇时都进行 AJAX 调用。这将保存您的 API 调用和 SQL 查询。
如果数据大小更大,那么以前的方法会增加页面的加载时间,因此最好在服务器端创建多个函数并在每次选择时进行 AJAX 调用。
如果您使用第二种方法,请不要将输入值直接传递给会打开 SQL 注入漏洞的查询。
胡子哥哥
TA贡献1825条经验 获得超6个赞
你走在正确的轨道上。如果您尝试一次发送所有内容,这将使您的代码更加复杂和难以维护,并且会占用更多的网络带宽。
您的查询容易受到 SQL 注入攻击。您可以使用参数化查询来解决此问题。https://www.php.net/manual/en/pdo.prepare.php
- 2 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消