首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend框架查询和输入验证

Zend框架查询和输入验证
EN

Stack Overflow用户
提问于 2013-01-01 18:52:58
回答 2查看 1K关注 0票数 1

我是zend框架(1.12)的新手,在我的模型中,在我的zend-db-table中,我想要验证输入(以避免sql注入),并且我想执行以下查询:

代码语言:javascript
复制
`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框架?我的意思是,首先你计划你的项目,然后你写模型,然后你写控制器,最后是视图(假设你一个人在做这件事)。

我为我的英语道歉,但我希望你能理解,非常感谢并祝你新年快乐!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-02 17:55:14

Zend_Db_Table将在大部分时间提供报价,即使您不明确使用select() Zend_Db通常也会:

代码语言:javascript
复制
//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():

代码语言:javascript
复制
//in your DbTable models
$where = $this->getAdapter()->quoteInto('user1 = ?', $user1);
$result = $this->getAdapter()->update($data, $where);

第二个问题是如何在quoteInto函数中放入多个值?

接口为:

代码语言:javascript
复制
/* @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_ValidateZend_Filter。最简单的方法是使用Zend_Filter_Input()

代码语言:javascript
复制
//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框架?我的意思是,首先你计划你的项目,然后你写模型,然后你写控制器,最后是视图(假设你一个人在做这件事)。

这是你的应用程序,想怎么做就怎么做。我不是故意挖苦你,但应用程序会让你知道它需要什么。通常,您将获得要显示的内容和要操作的数据。那就去构建计划吧。

票数 0
EN

Stack Overflow用户

发布于 2013-01-04 20:49:16

非常感谢你的回答,很抱歉让你久等了。我就是这样解决的

代码语言:javascript
复制
$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是否有固定的工作流程,你的回答让我松了一口气……:)

无论如何,我开始创建数据库,现在我正在处理模型,当我完成时,我将一起创建视图和控制器。

我有一个关于连接的问题,我可以从两个表中选择列吗?,是这样的吗?

代码语言:javascript
复制
$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');

我该怎么做呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14109808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档