Heim >Backend-Entwicklung >PHP-Tutorial >Zusammenfassung der Kenntnisse im Datenbankbetrieb von Zend Framework
Dieser Artikel stellt hauptsächlich die Datenbankbetriebsfähigkeiten von Zend Framework vor und analysiert die allgemeinen Funktionen, allgemeinen Vorgänge und zugehörigen Vorsichtsmaßnahmen in Form von Beispielen
Beispiele fassen die Datenbankoperationen von Zend Framework zusammen. Teilen Sie es wie folgt mit allen als Referenz:Zend_Db-Datenbankwissen
Beispiel:Modelldatei:
$this->fetchAll("is_jian=1","id DESC",0,2)->toArray(); //根据is_jian=1,按id倒序排列取前2条记录当第一个参数为null时,则直接按id倒序排列ASC为正序。
Routing-Datei:
$video=new Video();//实例化数据库类 $this->view->get2Video =$video->get2Video();//取到2条首页推荐的数据
index.phtml-Datei:
<?php foreach ($this->get2Video as $video): ?> <?=$video['id']; ?> <?=$video['name']; ?> <? endforeach; ?>
Anführungszeichen hinzufügen, um Datenbankangriffe zu verhindern
Zitat-Nutzung$value = $db->quote('St John"s Wort'); // $value 现在变成了 '"St John\"s Wort"' (注意两边的引号) // 为数组加引号 $value = $db->quote(array('a', 'b', 'c')); // $value 现在变成了 '"a", "b", "c"' (","分隔的字符串)ZitatInto-Nutzung
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) Zusammenfassung der Datenabfrage
Direkt abfragen (Verwenden Sie die vollständige SQL-Anweisung)
//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); // 使用PDOStatement对象$result将所有结果数据放到一个数组中 $videoArray = $result->fetchAll();
fetchAll use
fetchAll($where = null, $order = null, $count = null, $offset = null)
$videoArray=$this->fetchAll("is_jian=1 and is_guo=1","id DESC",0,2)->toArray();
fetchAssoc-Nutzung
fetchAssoc($sql, $bind = array())
$db = $this->getAdapter(); $videoArray=$db->fetchAssoc("SELECT * FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
fetchOne-Verwendung
fetchCol($sql, $bind = array())
$db = $this->getAdapter(); $videoArray=$db->fetchCol("SELECT name FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
fetchPairs-Verwendung
fetchOne($sql, $bind = array())
$db = $this->getAdapter(); echo $videoArray=$db->fetchOne("SELECT count(*) FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
fetchRow-Nutzung
fetchPairs($sql, $bind = array())
$db = $this->getAdapter(); $videoArray=$db->fetchPairs("SELECT id, name FROM m_video WHERE is_jian = :title",array('title' => '1'));
Abfragenutzung
fetchRow($where = null, $order = null)
Verwendung auswählen
$videoArray=$this->fetchRow("is_jian=1 and is_guo=1", 'id DESC')->toArray();oder verwenden Sie
Wenn Sie
//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);
direkt verwenden, wird die Das Ergebnis ist dasselbe
Verwendung einer gemeinsamen Abfrage mit mehreren Tabellen$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返回的结果一样 ->limit(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();Mit der find()-Methode können Sie den Primärschlüsselwert verwenden, um Daten in der Tabelle abzurufen .
$db->fetchAll($select)
(2) Zusammenfassung der Datenlöschung
Erste Methode: Sie können jede Tabelle löschen
$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') ->limit(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);
// 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));Zweite Methode: Sie können nur
(3) Datenaktualisierungszusammenfassung
Die erste Methode: Sie können jede Tabelle aktualisieren
//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);// 删除数据并得到影响的行数
Die zweite Methode Methode: Nur
//delete用法 // delete($where) $where = "name = 'bbb'"; echo $this->delete($where);// 删除数据并得到影响的行数
(4) Zusammenfassung der Dateneinfügung
// 以"列名"=>"数据"的格式构造更新数组,更新数据行 $table = 'm_video';// 更新的数据表 $db = $this->getAdapter(); $set = array ( 'name' => '蝶影重重', 'clicks' => '888', ); $where = $db->quoteInto('id = ?', '10');// where语句 // 更新表数据,返回更新的行数 echo $rows_affected = $db->update($table, $set, $where);
Die erste Methode: Sie können Daten in jede Tabelle einfügen
$set = array ( 'name' => '蝶影重重22', 'clicks' => '8880', ); $db = $this->getAdapter(); $where = $db->quoteInto('id = ?', '10');// where语句 $rows_affected = $this->update($set, $where);// 更新表数据,返回更新的行数
Auf diese Weise fügt der Unterfeldname eine Zeichenfolge von curdate() und die Adresse ein. Fügen Sie einen Zeitwert ein (das Ergebnis von curdate() 2009-05-09) Die zweite Methode: Dies ist nur möglich für diejenigen in dieser Tabelle geeignet sein und wurde noch nicht zusammengefasst
(5) Transaktionsverarbeitung
$table = 'm_gao';// 插入数据的数据表 $db = $this->getAdapter(); // 以"列名"=>"数据"的格式格式构造插入数组,插入数据行 $row = array ( 'title' => '大家好。111', 'content' => '影视网要改成用zend framework开发啊', 'time' => '2009-05-04 17:23:36', ); // 插入数据行并返回插入的行数 $rows_affected = $db->insert($table, $row); // 最后插入的数据id echo $last_insert_id = $db->lastInsertId(); $row=array( 'name'=>'curdate()', 'address' => new Zend_Db_Expr ('curdate()') )
Weitere zusammenfassende Artikel zu Zend Framework-Datenbankbetriebsfähigkeiten finden Sie auf der chinesischen PHP-Website!