1

我是 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 框架?我的意思是,首先你计划你的项目,然后你编写模型,然后你编写控制器,最后是视图(假设你一个人工作)。

ps:对不起,我的英语很抱歉,但我希望你能理解,非常感谢,新年快乐!

4

2 回答 2

1

非常感谢您的回答,抱歉耽搁了……我这样解决了

$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();`

我将数据库保存在我的注册表中,我可以随时获取它...这样做有任何安全性或其他类型的问题吗?

关于计划,我在问是否有与 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');

我怎样才能做到这一点?

于 2013-01-04T12:49:15.777 回答
0

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 函数中输入多个值?

api是:

/* @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(),但是还有其他可用的引用函数。

您如何验证模型中的输入?(不是表格)

使用验证表单时使用的相同类,使用Zend_ValidateZend_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-02T09:55:14.033 回答