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"' (注意两边的引号)) // 在where语句中为数组加上引号 $where = $db->quoteInto('id IN(?)', array(1, 2, 3)); // $where 现在为 'id IN("1", "2", "3")' (一个逗号分隔的字符串)
(1)数据查询总结
直接进行查询. (使用完整的sql语句)
//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用法
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())
retourne un tableau associatif, la première valeur du champ est le code (id), la deuxième valeur est la valeur (name)
retourne : Array( [1] => Dou shi xiang qi yuan [2] => Tao hua yun),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('dou shi xiang qi yuan', '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')// Trier par quoi, participer à l'array (plusieurs champs) ou la chaîne (un champ) ->group()//Regrouper ->having()//Conditions de requête de regroupement des données ->distinct()// Sans paramètres, supprimez les valeurs redondantes. Parfois, les résultats sont identiques à ceux de groupby ->limit(10); // Lire les résultats en utilisant les paramètres liés $params = array('is_guo' => '"1','name'=>'Les Douze Animaux Mythologiques'); //$sql = $select->__toString();//Obtenir l'instruction de requête, disponible pour le débogage $result = $db->fetchAll($select,$params); Exécuter la requête select $stmt = $db->query($select); $result = $stmt->fetchAll();
ou utilisez
$stmt = $select->query(); $result = $stmt->fetchAll();
Si vous utilisez directement
$db->fetchAll($select)
Les résultats sont identiques
Utilisation de la requête jointe de plusieurs tables
$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');//Requête jointe de plusieurs tables $videoArray = $db->fetchAll($select,$params);
La méthode find() peut être utilisée pour rechercher des données dans la table en utilisant la valeur de la clé principale.
// 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)Résumé de la suppression des données
Première méthode : supprimer n'importe quelle table
//quoteInto($text, $value, $type = null, $count = null) $table = 'm_video';// Définir la table nécessitant la suppression des données $db = $this->getAdapter(); $where = $db->quoteInto('name = '?', 'ccc');// Condition WHERE pour supprimer des données echo $rows_affected = $db->delete($table, $where);// Supprimer des données et obtenir le nombre de lignes affectées
Deuxième méthode : ne peut supprimer que les données de cette table
//Utilisation de delete // delete($where) $where = "name = 'bbb'"; echo $this->delete($where);// Supprimer des données et obtenir le nombre de lignes affectées
(3)Résumé de la mise à jour des données
Première méthode : peut mettre à jour n'importe quel tableau
// Construire un tableau de mise à jour en format 'nom_de_colonne' => 'donnée', mettre à jour une ligne de données $table = 'm_video';// Tableau de données mis à jour $db = $this->getAdapter(); $set = array ( 'name' => 'Butterfly Shadows', 'clicks' => '888', ); $where = $db->quoteInto('id = '?', '10);// Instruction WHERE // Mettre à jour les données du tableau, retourner le nombre de lignes mises à jour echo $rows_affected = $db->update($table, $set, $where);
Deuxième méthode : ne peut mettre à jour que les données de cette table
$set = array ( 'name' => 'Butterfly Shadows',22', 'clicks' => '8880', ); $db = $this->getAdapter(); $where = $db->quoteInto('id = '?', '10);// Instruction WHERE $rows_affected = $this->update($set, $where);// Mettre à jour les données du tableau, retourner le nombre de lignes mises à jour
(4)Résumé de l'insertion de données
Première méthode : peut insérer des données dans n'importe quelle table
$table = 'm_gao';// Tableau de données d'insertion $db = $this->getAdapter(); // Construire un tableau d'insertion en format 'nom_de_colonne' => 'donnée', insérer une ligne de données $row = array ( 'title' => 'Bonjour à tous.',111', 'content' => 'Le site de vidéo doit être développé avec Zend Framework', 'time' => '"}}2009-05-04 17:23:36', ); // Insérer des lignes de données et retourner le nombre de lignes insérées $rows_affected = $db->insert($table, $row); // ID du dernier enregistrement inséré echo $last_insert_id = $db->lastInsertId(); $row=array( 'name'=>'curdate()', 'address' => new Zend_Db_Expr ('curdate()') )
De cette manière, le champ 'name' insère une chaîne de curdate(), et 'address' insère une valeur de temps (résultat de curdate())2009-05-09)
Deuxième méthode : ne convient qu'à la table où les données ne sont pas encore résumées
(5)Traitement des transactions
$table = 'm_gao';// Tableau de données d'insertion $db = $this->getAdapter(); $db->beginTransaction();//Zend_Db_Adapter revient en mode commit automatique jusqu'à ce que vous appeliez à nouveau la méthode beginTransaction() // Construire un tableau d'insertion en format 'nom_de_colonne' => 'donnée', insérer une ligne de données $row = array ( 'id'=>null, 'title' => 'Bonjour à tous.',111', 'content' => 'Le site de vidéo doit être développé avec Zend Framework', 'time' => '"}}2009-05-04 17:23:36', ); try { // Insérer des lignes de données et retourner le nombre de lignes insérées $rows_affected = $db->insert($table, $row); // ID du dernier enregistrement inséré $last_insert_id = $db->lastInsertId(); $db->commit();// Soumission de la transaction }{catch (Exception $e){ $db->rollBack(); echo 'Exception capturée : $e'->getMessage();//Afficher les informations d'exception } echo $last_insert_id;
(6)Autres
$db = $this->getAdapter(); $tables = $db->listTables(); //Lister toutes les tables du base de données actuelle $fields = $db->describeTable('m_video');//Lister les champs d'une table
Pour plus d'informations sur Zend, les lecteurs intéressés peuvent consulter les articles spéciaux de ce site : 'Tutoriel d'entrée en matière sur le cadre Zend Framework', 'Résumé des meilleurs cadres de développement php', 'Résumé des techniques courantes de cadre Yii', 'Tutoriel d'entrée en matière sur ThinkPHP', 'Tutoriel d'entrée en matière sur la conception de programmes orientés objet php', 'php'+Tutoriel d'entrée en matière sur les opérations de base de données MySQL et Recueil de techniques courantes d'opérations de bases de données php
J'espère que ce tutoriel pourra aider à la conception de programmes PHP basés sur le framework Zend Framework.
Déclaration : le contenu de cet article est来源于网络,et appartient à ses auteurs respectifs. Le contenu est contribué et téléchargé par les utilisateurs d'Internet, ce site n'en possède pas la propriété, n'a pas été édité par l'homme, et n'assume pas la responsabilité des responsabilités juridiques pertinentes. Si vous trouvez du contenu présumé enfreignant les droits d'auteur, veuillez envoyer un email à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un email pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu présumé enfreignant les droits d'auteur.