[英]How to quote column names with Zend_Db?
我在MySQL表中使用key
作为列名。
由于这是保留的,因此需要正确转义才能在查询中使用:
… WHERE `key` = 'test'
手动这没问题,但我正在使用Zend Framework并希望它能正确处理转义,如下所示:
$table = new Application_Model_ATable();
$table->fetchRow ( $table->select()->where('key = ?','test') );
所以问题是:
如何使用Zend_Db_Table引用/转义列名?
这家伙实际上在这里解释,但生病只是快速拉出报价...
该表达式中需要引用或分隔的任何其他部分是您的责任。 例如,如果将任何PHP变量插入到表达式中,则安全是您的责任。 如果列名是SQL关键字,则需要使用quoteIdentifier()自行分隔它们。 例:
$select->where($db->quoteIdentifier('order').'=?', $myVariable)
希望这可以帮助!!
当使用大写字母时,必须引用列名。 当您计划将来切换数据库适配器时,使用$ db-> quoteIdentifier($ columnName)引用这些名称是很有用的。
尝试类似的东西:
$table = new Application_Model_ATable();
$where = $table->getAdapter()->quoteInto('key = ?', 'test');
$table->fetchRow ( $where );
* - 从Zend_Db_Table引用中摘录 - *
注意不会为您引用SQL表达式中的值和标识符。 如果您有需要引用的值或标识符,则您有责任这样做。 使用数据库适配器的quote(),quoteInto()和quoteIdentifier()方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.