我需要从mysql检索多个结果,并且必须多次使用同一个查询并添加 "and"
到 "where"
条款。例如:
我的第一个问题:
$class = "SELECT * FROM schools WHERE class= '8'";
我的其他问题:
$class8a ="SELECT * FROM schools WHERE class= '8' AND SECTION= 'A'";
$class8b ="SELECT * FROM schools WHERE class= '8' AND SECTION= 'B'";
…等等。学校的其他班级也一样。我目前正在一次又一次地编写查询,但我想知道是否有更简单的方法来实现这一点:从数组中的数据库中检索结果,然后对其进行过滤以供后续查询。
3条答案
按热度按时间bbuxkriu1#
例如,可以使用variable存储类似的查询
$and ="AND SECTION= 'A'";
并在主查询中使用变量来满足您的特定需求。就像
$class = "SELECT * FROM schools WHERE class= '8'";
和$class = "SELECT * FROM schools WHERE class= '8' $and";
可以使用条件将查询设置为任何变量。我认为这是有道理的。wlsrxk512#
将所有类放在一个数组中,例如。
$classArray = ['8','9'];
以及其他数组中的部分,例如。$sectionArray = ['A','B'];
现在运行一个查询来遍历classArray
然后sectionArray
例如。dtcbnfnu3#
您将查询存储到一个文本变量中,这意味着您打算稍后使用它,然后在那里编写
$class8a
:这可能会给您留下另一个问题:您必须知道类8,部分a的存在。如果一个类被添加或删除,你需要重写你的代码,这不仅效率低下,而且极易出错。
因此,一种方法是获取学校中的所有班级和部门,并填充一个数组:
现在你可以用
$pairs['8']['A']
而不是$class8a
. 也可以使用变量定义变量:但是对于命名变量,您仍然没有一种简单的方法来知道
$class7f
是否存在(您可以使用isset
但是我觉得很尴尬),更不用说枚举它们或者知道哪些类可能存在,而使用数组,您可以(使用foreach
).如果有人创建了一个辅助部分(你有吗?),
A'
而不是A*
或者A+
或者A1/2
“因为一颗星、一个加号或另一半可能会被家长或学生认为是有判断力的”。而A'
被代码视为sql注入攻击:WHERE section='A'';
是语法错误。现在你必须在内存中保存很多类似的查询。
推荐解决方案
更好的做法是,一旦有了类和节,只需动态构建查询:
然后要执行,使用pdo,这只会起作用:
可以使用数组跟踪事物并知道存在哪些类:
这允许您在html中放置一个类组合: