Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP与MySQL查询过滤_Php_Mysql - Fatal编程技术网

PHP与MySQL查询过滤

PHP与MySQL查询过滤,php,mysql,Php,Mysql,我在一家小型生物技术公司工作,我们在谷歌文档电子表格中存储了大量数据。这对于很多事情来说都很好,但对于某些类型的信息(例如,我们库存的细胞系以及它们所在的冷冻瓶和盒子),这并不是最好的格式。我自学了一些MySQL和PHP,并创建了一个存储相关信息的基本数据库和一个能够显示这些信息的简单web界面。当然,为了有用,它需要一些过滤/搜索功能,这就是我有点困惑的地方 对于任何给定的搜索,我都知道如何为其编写MySQL查询,以及如何从字段/谓词/值元组中获取它,这些元组将构成用户将提供的过滤器,但我不太

我在一家小型生物技术公司工作,我们在谷歌文档电子表格中存储了大量数据。这对于很多事情来说都很好,但对于某些类型的信息(例如,我们库存的细胞系以及它们所在的冷冻瓶和盒子),这并不是最好的格式。我自学了一些MySQL和PHP,并创建了一个存储相关信息的基本数据库和一个能够显示这些信息的简单web界面。当然,为了有用,它需要一些过滤/搜索功能,这就是我有点困惑的地方

对于任何给定的搜索,我都知道如何为其编写MySQL查询,以及如何从字段/谓词/值元组中获取它,这些元组将构成用户将提供的过滤器,但我不太确定应该在什么级别执行过滤。现在,我基本上在数据库中为每个将呈现给用户的“表”设置了一个视图(视图是必要的,因为呈现给用户的信息来自多个数据库表,并且执行了一个或多个联接)。然后,我有一个PHP对象,它将在给定数据库和视图名称的情况下创建基本查询,在必要时附加一个WHILE子句和所有过滤内容(例如,在准备好的语句中附加“WHERE box_number=?”,并将数字211存储在一个数组中,以便在调用execute函数时传递),然后运行查询并将结果显示为HTML表。我计划扩展该对象,以将特定功能构建到不同的表中,例如,让
box number
字段成为一个超链接,当您单击它时,它会将您带到显示冷冻箱内容的页面

不过,我在过去几周才开始学习PHP和数据库,所以我不确定这是否是实现这一目标的最佳方式。我的室友在Cisco从事这类工作,他建议使用存储过程将是一个更好的选择。我一直在研究这个问题,但我不确定是否有可能像实现过滤一样向存储过程传递任意数量的参数。我还看到一些消息来源说,最好只获取整个表/视图,然后用PHP进行过滤


那么,有没有“标准”或“最佳”的方法来实现这一点?这个项目的表格不会很大,最多可能有几百个条目。所以性能并不是一个真正的问题。大多数情况下,我只需要一种方法,在这种方法中,所有内容都相当灵活,并且可以在数据库结构发生变化时轻松更新(将来可能会向大多数表中添加更多列/字段)。我可能可以使用这些方法中的任何一种,但我想知道哪种方法可能最适合我的情况,这样我就不需要在以后重复所有操作。

我的直觉是,在数据变得太大而无法管理之前,应尽可能在客户端进行过滤。考虑一下像KIVA这样的网站。显然(我认为)您可以在那里过滤所有类型的内容,而无需对数据库进行任何异步调用。数据已经在DOM中。听起来您需要一个连接到报告解决方案的数据库。我不确定我会推荐你自己写,因为它一定已经存在了——比如“MSAccess for the web”。看看这里的想法:我不认为存储过程一定是更好的选择,尽管它们可以以与视图相同的方式返回记录集。关键是(a)您有什么查询,(b)它们需要什么参数,它们有什么类型/验证,它们应该有什么标签(c)每个查询在运行时应该如何呈现,以及(d)谁可以运行哪些查询。从本质上讲,这就是报告软件将为您所做的。