Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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查询条件oop_Php_Mysql_Sql_Oop_Conditional Statements - Fatal编程技术网

php-mysql查询条件oop

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变量,如果设置,则

我想知道如何从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个值的对象,但这很麻烦。如果它没有坏,就不要修理它。