我是zend框架(1.12)的新手,在我的模型中,在我的zend-db-table中,我想要验证输入(以避免sql注入),并且我想执行以下查询:
`SELECT id FROM friendships WHERE (user1= $user1 AND user2= $user2 ) OR (user1= $user2 AND user2= $user1 );`在示例中,我看到他们使用了类似$db->quoteInto('string');的东西,但是在模型中,我必须做什么呢?我不会写$this->quoteInto('string')...
第二个问题是如何在quoteInto函数中放入多个值?如何验证模型中的输入?(不是表单)
最后一个问题,你遵循哪些步骤来创建一个应用程序usign zend框架?我的意思是,首先你计划你的项目,然后你写模型,然后你写控制器,最后是视图(假设你一个人在做这件事)。
我为我的英语道歉,但我希望你能理解,非常感谢并祝你新年快乐!!
发布于 2013-01-02 17:55:14
Zend_Db_Table将在大部分时间提供报价,即使您不明确使用select() Zend_Db通常也会:
//query is broken into multiple line for more clarity and is just an example
$select = $this->getAdapter()->select();
$select->from('friendships');
$select->where('user1 = ?', $user1);
$select->where('user2 = ?', $user2);//successive where() will tie together with AND
$select->orWhere('user1 = ?', $user2);只要您的查询使用select()对象,它们就会被引用。
当需要在选择对象不可用的情况下执行插入或更新时,请使用quoteInto():
//in your DbTable models
$where = $this->getAdapter()->quoteInto('user1 = ?', $user1);
$result = $this->getAdapter()->update($data, $where);第二个问题是如何在quoteInto函数中放入多个值?
接口为:
/* @param string $text The text with a placeholder.
* @param mixed $value The value to quote.
* @param string $type OPTIONAL SQL datatype
* @param integer $count OPTIONAL count of placeholders to replace
* @return string An SQL-safe quoted value placed into the original text.
*/
public function quoteInto($text, $value, $type = null, $count = null)因此,quoteInto()并不真正支持多个值,但是还有其他quote functions are available.
如何验证模型中的输入?(不是表单)
使用与验证表单时相同的类,使用Zend_Validate和Zend_Filter。最简单的方法是使用Zend_Filter_Input()
//multiple methods demonstrated
$filters = array('*'=>'StringTrim','zip'=> new Zend_Filter_Digits());
$validators = array('name'=>'Alnum');
$input = new Zend_Filter_Input($filters, $validators, $data);
if ($input->isValid()){//do some stuff}和最后一个问题,你遵循哪些步骤来创建一个应用程序usign zend框架?我的意思是,首先你计划你的项目,然后你写模型,然后你写控制器,最后是视图(假设你一个人在做这件事)。
这是你的应用程序,想怎么做就怎么做。我不是故意挖苦你,但应用程序会让你知道它需要什么。通常,您将获得要显示的内容和要操作的数据。那就去构建计划吧。
发布于 2013-01-04 20:49:16
非常感谢你的回答,很抱歉让你久等了。我就是这样解决的
$db= Zend_Registry::get('db');
$select=$db->select()
->from($this->_name)
->where("utente1= ".$db->quote($user1, 'INTEGER')." AND utente2= ".$db->quote($user2, 'INTEGER'))
->orWhere("utente1= ".$db->quote($user2, 'INTEGER')." AND utente2= ".$db->quote($user1, 'INTEGER'));
$stmt=$select->query();
$result=$stmt->fetchAll();`我保存在我的注册表中的数据库,我得到它时,我want...is有任何安全或其他类型的问题这样做?
关于计划,我问zend是否有固定的工作流程,你的回答让我松了一口气……:)
无论如何,我开始创建数据库,现在我正在处理模型,当我完成时,我将一起创建视图和控制器。
我有一个关于连接的问题,我可以从两个表中选择列吗?,是这样的吗?
$select = $db->select()
->from(array('p' => 'products'),
array('p.product_id', 'p.product_name', 'l.description'))
->join(array('l' => 'line_items'),
'p.product_id = l.product_id');我该怎么做呢?
https://stackoverflow.com/questions/14109808
复制相似问题