Php 逐步查询MySQL数据库-最佳方法?

Php 逐步查询MySQL数据库-最佳方法?,php,sql,mysql,database,ajax,Php,Sql,Mysql,Database,Ajax,我正在构建一个web应用程序,它使用PHP5、MySQL 5和Javascript以及jQuery和AJAX 应用程序是一个非常复杂的选择过程,有几个下拉菜单,用户可以按任意顺序选择。下拉列表中的每个选择都会给出更多的选择标准,这将限制其他下拉列表中的选择,并最终给出有限的结果集 我在客户端使用Javascript,AJAX连接到服务器和MySQL数据库上的PHP,每次用户从下拉列表中选择某个内容时,我都会发送AJAX请求来更新所有其他下拉列表。设置所有可能的参数后,将显示结果集 (出于各种原因

我正在构建一个web应用程序,它使用PHP5、MySQL 5和Javascript以及jQuery和AJAX

应用程序是一个非常复杂的选择过程,有几个下拉菜单,用户可以按任意顺序选择。下拉列表中的每个选择都会给出更多的选择标准,这将限制其他下拉列表中的选择,并最终给出有限的结果集

我在客户端使用Javascript,AJAX连接到服务器和MySQL数据库上的PHP,每次用户从下拉列表中选择某个内容时,我都会发送AJAX请求来更新所有其他下拉列表。设置所有可能的参数后,将显示结果集

(出于各种原因,我确实希望将逻辑保留在服务器端,因此使用AJAX。)

现在,我不确定为每个用户处理这个“迭代”过程的最佳方法是什么:

我有一个表格,上面有每个选择结果的所有标准。由于每个下拉选择都会产生一组if选择条件,因此我可以在服务器上存储一个查询字符串,为每个选择添加查询字符串。然后,我运行当前存储的查询字符串,找出每个下拉列表中应该包含的内容,将该数据发送到客户端,然后存储查询,以便稍后添加更多条件、运行、发送等。。。 然后,我必须在服务器上为每个用户存储该查询字符串,可能是在一个文本文件中。或者,作为一个存储过程,请参见下文

另一种方法是,在完成选择时,只使用新的条件运行查询,发送数据以更新下拉列表,然后将选择存储在我运行下一次查询的临时表中,等等。因此,临时表将针对每个选择进行收缩,直到我显示结果为止

该应用程序可以有多个用户同时工作,因此可能必须以某种方式通过cookie/会话ID来识别用户….(?)

当每个用户离开一段时间后,存储的查询或临时表必须消失……如何

选择方法添加越来越多的标准以从表中选择,从而允许复杂的选择计算:

  • 使用连接

  • 使用一个临时表,随着添加新条件时记录被删除,临时表受到越来越多的限制

  • 使用子选择

为每个用户跟踪每个步骤的存储方法:

  • 将参数存储在服务器文件中,并为每个选择步骤将其插入sql或存储过程中,为每个步骤对整个数据库执行新的查询,但每次都会添加更多的条件

  • 将sql查询存储在文件中,并为每个步骤扩展它

  • 将sql查询存储在表/字段中

  • 将sql查询存储在存储过程中

  • 将每个用户先前选择的实际有限结果集存储在一个temopary表中,随着每个步骤删除越来越多的记录,该表将越来越小

  • 在会话期间,将参数存储在客户端,并针对每个选择将所有参数重新发送到服务器

有人能帮忙做这个决定吗

Rgds
PM

我建议的最佳方法是,每当用户更改下拉框中的值时,运行不同的查询。如果您有5个下拉框,当用户更改第一个框中的值时,您可以从AJAX页面运行查询:

SELECT * FROM table WHERE val1 = x;
然后,一旦用户决定更改另一个值,您就可以运行更窄的查询,例如

SELECT * FROM table WHERE val1 = x AND val2 = y;
然后可以重复此过程,直到所有下拉框都已更改

至于使用临时表或存储过程。我想说,这可能不是你想要实现的目标所必需的,可能只是给项目增加了不必要的复杂性


如果您知道需要从前端检查哪些字段,那么您应该只将下拉框中选择的值发送到AJAX页面,这样它就可以决定需要运行什么查询并返回结果(XML/JSON非常适合).

我建议的最佳方法是,每当用户更改下拉框中的值时,运行不同的查询。如果您有5个下拉框,当用户更改第一个框中的值时,您可以从AJAX页面运行查询:

SELECT * FROM table WHERE val1 = x;
然后,一旦用户决定更改另一个值,您就可以运行更窄的查询,例如

SELECT * FROM table WHERE val1 = x AND val2 = y;
然后可以重复此过程,直到所有下拉框都已更改

至于使用临时表或存储过程。我想说,这可能不是你想要实现的目标所必需的,可能只是给项目增加了不必要的复杂性


如果您知道需要从前端检查哪些字段,那么您只需将下拉框中选择的值发送到AJAX页面,这样它就可以决定需要运行什么查询并返回结果(XML/JSON非常适合)。

谢谢!我觉得这对我自己来说有点太复杂了……我只会跟踪在客户端使用/单击了哪些下拉列表,然后在单击了另一个下拉列表时将这些内容发送到服务器端。然后,服务器可以从表中选择*,其中field1=param1和Field2=param2等最多15个字段。尚未解析的参数可以设置为通配符,这样我就可以一直使用相同的查询字符串(我猜?)…谢谢!我觉得这对我自己来说有点太复杂了……我只会跟踪在客户端使用/单击了哪些下拉列表,然后在单击了另一个下拉列表时将这些内容发送到服务器端。然后,服务器可以从表中选择*,其中field1=param1和Field2=param2等最多15个字段。尚未解析的参数可以设置为通配符,以便我可以使用