Php ZF2复杂SQL在何处关闭
如何在Zend\Db\Sql中创建复杂的关闭位置? 带有“COLLATE utf\u general\u ci”或“REGEXP”的。 还有,将查询作为我想要的字符串提供给它的方法是什么Php ZF2复杂SQL在何处关闭,php,zend-framework2,zend-db-select,Php,Zend Framework2,Zend Db Select,如何在Zend\Db\Sql中创建复杂的关闭位置? 带有“COLLATE utf\u general\u ci”或“REGEXP”的。 还有,将查询作为我想要的字符串提供给它的方法是什么 谢谢大家! 一个完整复杂where子句的示例会有所帮助,但您可以使用表达式或文字 启动适配器 $adapter = new Zend\Db\Adapter\Adapter(array( 'driver' => 'Mysqli', 'database' => 'zend_db_exam
谢谢大家! 一个完整复杂where子句的示例会有所帮助,但您可以使用表达式或文字 启动适配器
$adapter = new Zend\Db\Adapter\Adapter(array(
'driver' => 'Mysqli',
'database' => 'zend_db_example',
'username' => 'developer',
'password' => 'developer-password'
));
$sql = new Zend\Db\Sql\Sql($adapter);
$qi = function($name) use ($adapter) { return $adapter->platform->quoteIdentifier( $name ); };
$qv = function($name) use ($adapter) { return $adapter->platform->quoteValue( $name ); };
文字
$regexSpecification = '(\\"key\\":\\"value\\")';
$sql->select()
->from('dbTable')
->where->literal( $qi('column1') . " REGEXP " . $qv($regexSpecification) )
->or->equalTo('column2', 'value');
//SELECT `dbTable`.* FROM `dbTable` WHERE `column1` REGEXP '(\"key\":\"value\")' OR `column2` = 'value'
表达
$expression = new Zend\Db\Sql\Predicate\Expression( "SHA2(".$qi('column2').", 512)" );
$sql->select()
->from('dbTable')
->columns( array( 'hashed' => $expression ) )
->where( array( $qi('column1') . " COLLATE latin1_general_cs = " . $qv('value')));
//SELECT SHA2(`column2`, 512) AS `hashed` FROM `dbTable` WHERE `column1` COLLATE latin1_general_cs = 'value'
适配器执行的查询
$adapter->query( 'ALTER TABLE ADD INDEX('. $qi('foo') .') ON ( '. $qi('foo_column') .' )', Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE );
参考资料:
谢谢@fyrye!我自己已经算出了文字,但这肯定会帮助周围的其他人。