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')

2番目の質問は、quoteInto関数に複数の値を入れるにはどうすればよいですか? モデルの入力をどのように検証しますか? (フォームではありません)

最後の質問ですが、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_Tableselect()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);

2番目の質問は、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 に答える