English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文实例总结了Zend Framework数据库操作。分享给大家供大家参考,具体如下:
Zend_Db数据库知识
例子:
Model文件:
$this->fetchAll("is_jian=1","id DESC",0,2)->toArray(); //根据is_jian=1,按id倒序排列取前2条记录当第一个参数为null时,则直接按id倒序排列ASC为正序。
路由文件:
$video=new Video();//实例化数据库类 $this->view->get2Video =$video->get2Video();//取到2条首页推荐的数据
index.phtml文件:
<63;php foreach ($this->get2Video as $video):63;> <63;=$video['id'];63;> <63;=$video['name'];63;> <63; endforeach;63;>
添加引号防止数据库攻击
quote用法
$value = $db->quote('St John"s Wort'); // $value 现在变成了 '"St John\"s Wort"' (注意两边的引号) // 为数组加引号 $value = $db->quote(array('a', 'b', 'c')); // $value 现在变成了 '"a", "b", "c"' (","分隔的字符串)
quoteInto用法
echo $where = $db->quoteInto('id = ? 1); // $where 现在为 'id = "1"' (Beachten Sie die Anführungszeichen beiderseits) // Fügen Sie im WHERE-Statement dem Array Anführungszeichen hinzu $where = $db->quoteInto('id IN(?)', array(1, 2, 3)); // $where ist jetzt 'id IN("1", "2", "3")' (eine durch Komma getrennte Zeichenfolge)
(1)Datenabfragesummary
Durchsuchen Sie direkt. (Verwenden Sie das vollständige SQL-Skript)
//function 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); // Verwenden Sie das PDOStatement-Objekt $result, um alle Ergebnisdaten in ein Array zu setzen $videoArray = $result->fetchAll();
fetchAll-Beschreibung
fetchAll($where = null, $order = null, $count = null, $offset = null)
Die Werte aller Felder im Ergebnissatz zurückgeben, als kontinuierliches Array, wenn der Parameter nicht eingestellt ist, wird es null
Spezifische Anzahl von Ergebnissätzen der Ergebnissammlung abrufen können
$videoArray=$this->fetchAll("is_jian=1 and is_guo=1","id DESC",0,2)->toArray();
fetchAssoc-Beschreibung
fetchAssoc($sql, $bind = array())
Die Werte aller Felder im Ergebnissatz zurückgeben, als verknüpftes Array, das erste Feld als Schlüssel
$db = $this->getAdapter(); $videoArray=$db->fetchAssoc("SELECT * FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
fetchCol-Beschreibung
fetchCol($sql, $bind = array())
den Namen des ersten Feldeingabewerts aller Ergebnissätze zurückgeben
$db = $this->getAdapter(); $videoArray=$db->fetchCol("SELECT name FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
fetchOne-Beschreibung
fetchOne($sql, $bind = array())
nur den ersten Feldeingabewert zurückgeben
$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),第二个字段为值(name)
返回:Array( [1] => 十二生肖奇缘 [2] => 桃花运),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();
query用法
//function query($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('十二生肖奇缘', '1')); //$result->setFetchMode(Zend_Db::FETCH_OBJ);//FETCH_OBJ为默认值,FETCH_NUM,FETCH_BOTH //while ($row = $result->fetch()) { // echo $row['name']; //} //$rows = $result->fetch(); //$rows = $result->fetchAll(); //$obj = $result->fetchObject();//echo $obj->name; // echo $Column = $result->fetchColumn(0);//得到结果集的第一个字段,比如0为id号,用于只取一个字段的情况 print_r($rows);
select用法
$db = $this->getAdapter(); $select = $db->select(); $select->from('m_video', array('id','name','clicks')) ->where('is_guo = :is_guo and name = :name') ->order('name')// 按什么排序列,参加为数组(多个字段)或字符串(一个字段) ->group()//分组 ->having()//分组查询数据的条件 ->distinct()// 无参数,去掉重复的值。有时候与groupby返回的结果一样 -10); // 读取结果使用绑定的参数 $params = array('is_guo' => '',1','name'=>'十二生肖奇缘'); //$sql = $select->__toString();//得到查询语句,可供调试 $result = $db->fetchAll($select,$params); 执行select的查询 $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') ->order('up_time') -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 * FROM round_table WHERE id = "1" $row = $table->find(1); // SELECT * FROM round_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-Bedingung für die Löschung der Daten echo $rows_affected = $db->delete($table, $where);// Lösche Daten und erhalte die Anzahl der betroffenen Zeilen
Zweite Methode: Nur geeignet für Löschungen in dieser Tabelle
//Verwendung von delete // delete($where) $where = "name = 'bbb'"; echo $this->delete($where);// Lösche Daten und erhalte die Anzahl der betroffenen Zeilen
(3)Zusammenfassung der Datenaktualisierung
Erste Methode: Aktualisierungen können in jeder Tabelle vorgenommen werden
// Erstelle ein Aktualisierungs-Array im Format "Spaltenname"=>"Daten", um eine Datenzeile zu aktualisieren $table = 'm_video';// Aktualisierte Datenbanktabelle $db = $this->getAdapter(); $set = array ( 'name' => 'Butterfly Shadows', 'clicks' => '888', ); $where = $db->quoteInto('id = ?',10);// WHERE-Anweisung // Aktualisiere Tabellen Daten, gibt die Anzahl der aktualisierten Zeilen zurück echo $rows_affected = $db->update($table, $set, $where);
Zweite Methode: Nur geeignet für Aktualisierungen in dieser Tabelle
$set = array ( 22', 'clicks' => '8880, ); $db = $this->getAdapter(); $where = $db->quoteInto('id = ?',10);// WHERE-Anweisung $rows_affected = $this->update($set, $where);// Aktualisiere Tabellen Daten, gibt die Anzahl der aktualisierten Zeilen zurück
(4)Zusammenfassung der Dateninsertion
Erste Methode: Daten können in jeder Tabelle eingefügt werden
$table = 'm_gao';// Datenbanktabelle für die Dateninsertion $db = $this->getAdapter(); // Erstelle ein Einfüge-Array im Format "Spaltenname"=>"Daten", füge eine Datenzeile ein $row = array ( 'title' => 'Hallo alle zusammen.',111', 'content' => 'Filmnetz soll mit Zend Framework entwickelt werden', 'time' => '"2009-05-04 17:23:36', ); // Fügen Sie Datenzeilen hinzu und geben Sie die Anzahl der eingefügten Zeilen zurück $rows_affected = $db->insert($table, $row); // Letzte eingefügte Daten-ID echo $last_insert_id = $db->lastInsertId(); $row = array ( 'name' => 'curdate()', 'address' => new Zend_Db_Expr ('curdate()'), )
In diesem Fall wird das Feld 'name' einen String von 'curdate()' eingefügt, und 'address' einen Zeitwert (das Ergebnis von 'curdate()')2009-05-09)
Zweite Methode: Nur geeignet für noch nicht zusammengefasste Tabellen in diesem Beispiel
(5)Transaktionsverarbeitung
$table = 'm_gao';// Datenbanktabelle für die Dateninsertion $db = $this->getAdapter(); $db->beginTransaction();//Zend_Db_Adapter kehrt in den automatischen Commit-Modus zurück, bis du beginTransaction() erneut aufrufst // Erstelle ein Einfüge-Array im Format "Spaltenname"=>"Daten", füge eine Datenzeile ein $row = array ( 'id' => null, 'title' => 'Hallo alle zusammen.',111', 'content' => 'Filmnetz soll mit Zend Framework entwickelt werden', 'time' => '"2009-05-04 17:23:36', ); try { // Fügen Sie Datenzeilen hinzu und geben Sie die Anzahl der eingefügten Zeilen zurück $rows_affected = $db->insert($table, $row); // Letzte eingefügte Daten-ID $last_insert_id = $db->lastInsertId(); $db->commit();// Transaktionserstellung })catch (Exception $e){ $db->rollBack(); echo 'Abgefangene Ausnahme: $e'->getMessage();//Geben Sie die Ausnahmeinformationen aus } echo $last_insert_id;
(6)andere
$db = $this->getAdapter(); $tables = $db->listTables(); //Liste alle Tabellen der aktuellen Datenbank auf $fields = $db->describeTable('m_video');//Liste die Felder eines Tables auf
Interessierte Leser können mehr über Zend finden, indem sie die Themenbereiche dieser Website besuchen: 'Einführung in das Zend FrameWork Framework', 'Zusammenfassung der besten php-Entwicklungsframeworks', 'Einführung und häufige Techniken des Yii-Frameworks', 'Einführung in das ThinkPHP-Framework', 'Einführung in die objektorientierte PHP-Programmierung', 'php'+Einführung in die mysql-Datenbankoperationen und Zusammenfassung der häufigsten Datenbankoperationen in php
Ich hoffe, dass die in diesem Artikel beschriebenen Informationen für alle bei der PHP-Programmierung mit dem Zend Framework Framework hilfreich sind.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrecht des jeweiligen Eigentümers. Der Inhalt wurde von Internetbenutzern selbstständig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte entdecken, freuen wir uns über die Zusendung einer E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Verstößen und fügen Sie relevante Beweise bei. Bei nachgewiesener Verletzung wird die Website die涉嫌侵权内容 sofort löschen.)