php-mysql查询条件oop
我想知道如何从PHP中的SelectQuery对象为SelectMySQL查询创建一个通用函数。SelectQuery扩展了查询,这意味着它继承了数据库连接、realescape方法(即mysqli\u real\u escape\u string())和执行查询的查询方法。除此之外,它还获取一个名为_sql的受保护变量,这是query()方法传递给数据库的sql。它还得到一个名为_table的受保护变量,其中包含它正在处理的表的(转义)名称 我的代码: 可以设置$known变量,如果设置,则它应该是一个数组,其中包含我们正在选择的行的所有“已知”元素 我的问题是:我怎样才能使这样的条件php-mysql查询条件oop,php,mysql,sql,oop,conditional-statements,Php,Mysql,Sql,Oop,Conditional Statements,我想知道如何从PHP中的SelectQuery对象为SelectMySQL查询创建一个通用函数。SelectQuery扩展了查询,这意味着它继承了数据库连接、realescape方法(即mysqli\u real\u escape\u string())和执行查询的查询方法。除此之外,它还获取一个名为_sql的受保护变量,这是query()方法传递给数据库的sql。它还得到一个名为_table的受保护变量,其中包含它正在处理的表的(转义)名称 我的代码: 可以设置$known变量,如果设置,则
年龄<18
或日期>5120740154
是否容易制作
另外,如果你认为我做这件事的方式是错误的,请说出来
提前感谢动态构建可使用任何运算符的WHERE条件
创建一个包含where条件的$where数组
$where = array (
'age <' => 18,
'date >' => 5120740154
);
这将返回要附加到查询的where条件:
WHERE 1=1 AND age < 18 AND date > 5120740154
其中1=1,年龄<18岁,日期>5120740154
动态构建可以使用任何运算符的WHERE条件
创建一个包含where条件的$where数组
$where = array (
'age <' => 18,
'date >' => 5120740154
);
这将返回要附加到查询的where条件:
WHERE 1=1 AND age < 18 AND date > 5120740154
其中1=1,年龄<18岁,日期>5120740154
我的自定义DB类中没有用于选择的方法,因为正如您的代码所示,您通常在函数调用中编写的内容与编写整个查询一样多。我也不需要担心更复杂的事情,比如你提到的条件。@G-Nugget:嗯,谢谢你分享,我可能会把它改成一种更简单的执行查询的方式。。我看到的唯一问题是转义,因为MySQLi需要一个数据库连接标识符来转义(我不知道为什么)。我的自定义DB类中没有用于选择的方法,因为正如您的代码所示,您通常在函数调用中编写的内容与编写整个查询一样多。我也不需要担心更复杂的事情,比如你提到的条件。@G-Nugget:嗯,谢谢你分享,我可能会把它改成一种更简单的执行查询的方式。。我看到的唯一问题是转义,因为MySQLi需要一个数据库连接标识符来转义(我不知道为什么)。感谢您的解决方案。我不太喜欢WHERE 1=1,但另一部分很好。。唯一困扰我的是,我必须在列名中包含运算符(?)。我该如何做才能有所不同?也许可以创建条件对象,使其可以包含3个值而不是2个值(key=>value)?您可以使用三元运算符($conditions!='')摆脱1=1的困扰:($conditions!='')和“:'WHERE'为什么在列名中包含运算符会有问题?除了有点难看之外,它还能工作。您可以创建一个包含3个值的对象,但这很麻烦。如果它没有坏,就别修了。谢谢你的解决方案。我不太喜欢WHERE 1=1,但另一部分很好。。唯一困扰我的是,我必须在列名中包含运算符(?)。我该如何做才能有所不同?也许可以创建条件对象,使其可以包含3个值而不是2个值(key=>value)?您可以使用三元运算符($conditions!='')摆脱1=1的困扰:($conditions!='')和“:'WHERE'为什么在列名中包含运算符会有问题?除了有点难看之外,它还能工作。您可以创建一个包含3个值的对象,但这很麻烦。如果它没有坏,就不要修理它。