Zend_Db データベースの知識
例:
モデルファイル:
$this->fetchAll("is_jian=1","id DESC",0,2)->toArray();//is_jian=1 に従い、id を先頭として逆順に最初の 2 レコードを取得します。パラメーターが null の場合、ASC は ID によって直接逆順に正の順にソートされます。
ルーティングファイル:
$video=new Video();//データベースクラスをインスタンス化します
$this->view->get2Video =$video->get2Video();//ホームページのおすすめデータを2件取得
Index.phtml ファイル:
get2Video as $video): ?>
=$ビデオ[id] ?>
;
=$ビデオ[名前] ?>
;
エンドフォーリーチ ?>
データベース攻撃を防ぐために引用符を追加します
引用の使用法
$value = $db->quote(セントジョーンズワート);
// $value が「セントジョンズワート」になります (両側の引用符に注意してください)
// 配列に引用符を追加します
$value = $db->quote(array(a, b, c));
// $value は "a"、"b"、"c" ("," で区切られた文字列) になります
使い方への引用
echo $where = $db->quoteInto(id = ?, 1);
// $where は id = "1" (両側の引用符に注意してください)
// where ステートメント内の配列に引用符を追加します
$where = $db->quoteInto(id IN(?), array(1, 2, 3));
// $where は id IN("1", "2", "3") (カンマ区切りの文字列) になります
(1)データクエリの概要
直接クエリ (完全な SQL ステートメントを使用)
//関数 quoteInto($text, $value, $type = null, $count = null)
$db = $this->getAdapter();
$sql = $db->quoteInto(SELECT * FROM `m_video` WHERE `is_guo` =?, 1);
$result = $db->query($sql);
// PDOStatement オブジェクト $result を使用して、すべての結果データを配列に入れます
$videoArray = $result->fetchAll();
fetchAll の使用法
fetchAll($where = null, $order = null, $count = null, $offset = null)
結果セット内のすべてのフィールドの値を取得し、パラメータが設定されていない場合は、null を書き込みます
。
結果セット内の指定された数の項目を取得できます
$videoArray=$this->fetchAll("is_jian=1 and is_guo=1","id DESC",0,2)->toArray();
fetchAssocの使用法
fetchAssoc($sql, $bind = array())
結果セット内のすべてのフィールドの値を取得し、それらを連想配列として返します。最初のフィールドはコードとして使用されます
。
$db = $this->getAdapter();
$videoArray=$db->fetchAssoc("SELECT * FROM m_video WHERE `is_jian` = :title",array(title => 1));
fetchColの使用法
fetchCol($sql, $bind = array())
すべての結果行の最初のフィールド名を取得します
$db = $this->getAdapter();
$videoArray=$db->fetchCol("SELECT name FROM m_video WHERE `is_jian` = :title",array(title => 1));
fetchOne の使用法
fetchOne($sql, $bind = array())
最初のフィールド値のみを取得します
$db = $this->getAdapter();
echo $videoArray=$db->fetchOne("SELECT count(*) FROM m_video WHERE `is_jian` = :title",array(title => 1));
fetchPairsの使用法
fetchPairs($sql, $bind = array())
関連する配列を取得します。最初のフィールドの値はコード (id)、2 番目のフィールドは値 (名前) です
戻り値: Array([1] => Chinese Zodiac Romance [2] => Romance)、1,2: は ID フィールドです。
$db = $this->getAdapter();
$videoArray=$db->fetchPairs("SELECT id, name FROM m_video WHERE is_jian = :title",array(title => 1));
fetchRowの使用法
fetchRow($where = null, $order = null)
結果セットの最初の行のみを取得します
$videoArray=$this->fetchRow("is_jian=1 and is_guo=1", id DESC)->toArray();
クエリの使用法
//関数クエリ($sql, $bind = array())
$db = $this->getAdapter();
$result = $db->query(SELECT * FROM `m_video`);
//$result = $db->query(SELECT * FROM `m_video` WHERE `name` = ? AND id = ?,array(zodiac Romance, 1));
//$result->setFetchMode(Zend_Db::FETCH_OBJ);//FETCH_OBJ はデフォルト値、FETCH_NUM、FETCH_BOTH です
//while ($row = $result->fetch()) {
// エコー $row[name];
//}
//$rows = $result->fetch();
//$rows = $result->fetchAll();
//$obj = $result->fetchObject();//echo $obj->name;
// echo $Column = $result->fetchColumn(0);// 結果セットの最初のフィールドを取得します。たとえば、0 は ID 番号で、1 つのフィールドのみをフェッチするために使用されます
print_r($rows);
用途を選択してください
$db = $this->getAdapter();
$select = $db->select();
$select->from(m_video, array(id,name,clicks))
->where(is_guo = :is_guo および name = :name)
->order(name)//列を並べ替える方法、配列 (複数のフィールド) または文字列 (1 つのフィールド) として追加します
->group()//グループ
->having()//グループクエリデータの条件
->distinct()// パラメータがないため、重複した値を削除します。 groupby によって返される結果が同じになる場合があります
->制限(10);
// バインドされたパラメータを使用して結果を読み取ります
$params = array(is_guo => 1,name=>十二支のロマンス);
//$sql = $select->__toString();//デバッグ用のクエリ文を取得します
$result = $db->fetchAll($select,$params);
選択クエリを実行します
$stmt = $db->query($select);
$result = $stmt->fetchAll();
または
を使用してください
$stmt = $select->query();
$result = $stmt->fetchAll();
直接使用する場合
$db->fetchAll($select) も同じ結果になります
複数テーブルのジョイントクエリの使用法
$db = $this->getAdapter();
$select = $db->select();
$select->from(m_video, array(id,name,pic,actor,type_id,up_time))
->where(is_guo = :is_guo and is_jian = :is_jian)
->注文(アップタイム)
->制限(2);
$params = array(is_guo => 1,is_jian=>1);
$select->join(m_type, m_video.type_id = m_type.t_id, type_name);//複数テーブル結合クエリ
$videoArray = $db->fetchAll($select,$params);
find() メソッドを使用すると、主キー値を使用してテーブル内のデータを取得できます。
// SELECT * FROMround_table WHERE id = "1"
$row = $table->find(1);
// SELECT * FROMround_table WHERE id IN("1", "2", 3")
$rowset = $table->find(array(1, 2, 3));
(2)データ削除概要
最初の方法: 任意のテーブルを削除できます
//quoteInto($text, $value, $type = null, $count = null)
$table = m_video;//データを削除するテーブルを設定します
$db = $this->getAdapter();
$where = $db->quoteInto(name = ?, ccc);//データを削除するWhere条件文
echo $rows_affected = $db->delete($table, $where);// データを削除し、影響を受ける行の数を取得します
2 番目の方法: このテーブル内の
のみを削除できます
//使用状況を削除
//削除($where)
$where = "名前 = bbb";
echo $this->delete($where);// データを削除し、影響を受ける行の数を取得します
(3)データ更新概要
最初の方法: 任意のテーブルを更新できます
// 「列名」=>「データ」の形式で更新配列を構築し、データ行を更新します
$table = m_video;//データテーブルを更新しました
$db = $this->getAdapter();
$set = 配列 (
名前 => 蝶の影、
クリック => 888、
);
$where = $db->quoteInto(id = ?, 10);//where ステートメント
//テーブルデータを更新し、更新された行数を返します
echo $rows_affected = $db->update($table, $set, $where);
2 番目の方法: このテーブルの
のみを更新できます
$set = 配列 (
名前 => バタフライシャドウヘビー 22、
クリック => 8880、
);
$db = $this->getAdapter();
$where = $db->quoteInto(id = ?, 10);//where ステートメント
$rows_affected = $this->update($set, $where);//テーブルデータを更新し、更新された行数を返します
(4)データ挿入概要
最初の方法: 任意のテーブルにデータを挿入できます
$table = m_gao;//データを挿入するデータテーブル
$db = $this->getAdapter();
// 「列名」=>「データ」の形式で挿入配列を構築し、データ行を挿入します
$row = 配列 (
タイトル => 皆さん、こんにちは。 111、
コンテンツ => 映画とテレビのネットワークは zend フレームワークを使用して開発する必要があります
時間 => 2009-05-04 17:23:36、
);
//データ行を挿入し、挿入された行数を返します
$rows_affected = $db->insert($table, $