为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
侃侃尔雅 2022-12-11 16:28:23
所以我正在创建一个条件表单,其中选项根据先前的选择填充。例如,考虑一个基本示例:国家 = [列表]城镇 = [列表]街道 = [列表]人们可能想查询他们的数据库以找到与所选国家相对应的所有城镇。一旦选择了一个城镇,他们就会想要查询他们的数据库以找到与所选城镇对应的所有街道。但是,我不确定为此组织 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 注入漏洞的查询。


查看完整回答
反对 回复 2022-12-11
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

你走在正确的轨道上。如果您尝试一次发送所有内容,这将使您的代码更加复杂和难以维护,并且会占用更多的网络带宽。

您的查询容易受到 SQL 注入攻击。您可以使用参数化查询来解决此问题。https://www.php.net/manual/en/pdo.prepare.php


查看完整回答
反对 回复 2022-12-11
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信