繁体   English   中英

如何使用Zend_Db引用列名?

[英]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引用/转义列名?

避免使用Zend_Db类进行MySQL注入

这家伙实际上在这里解释,但生病只是快速拉出报价...

该表达式中需要引用或分隔的任何其他部分是您的责任。 例如,如果将任何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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM