Maison > développement back-end > tutoriel php > Résumé des compétences opérationnelles de base de données Zend Framework

Résumé des compétences opérationnelles de base de données Zend Framework

高洛峰
Libérer: 2023-03-05 21:08:01
original
1765 Les gens l'ont consulté

Cet article présente principalement les compétences d'exploitation de la base de données du Zend Framework. Il résume et analyse les fonctions courantes, les opérations courantes et les précautions associées pour les opérations de base de données sous forme d'exemples. Les amis dans le besoin peuvent se référer à cet article

. Des exemples résument les opérations de base de données Zend Framework. Partagez-le avec tout le monde pour votre référence, comme suit :

Connaissance de la base de données Zend_Db

Exemple :

Fichier modèle :

$this->fetchAll("is_jian=1","id DESC",0,2)->toArray();
//根据is_jian=1,按id倒序排列取前2条记录当第一个参数为null时,则直接按id倒序排列ASC为正序。
Copier après la connexion

Fichier de routage :

$video=new Video();//实例化数据库类
$this->view->get2Video =$video->get2Video();//取到2条首页推荐的数据
Copier après la connexion

fichier index.phtml :

<?php foreach ($this->get2Video as $video): ?>
<?=$video[&#39;id&#39;]; ?>
<?=$video[&#39;name&#39;]; ?>
<? endforeach; ?>
Copier après la connexion

Ajouter des guillemets pour empêcher les attaques de base de données

quote usage

$value = $db->quote(&#39;St John"s Wort&#39;);
// $value 现在变成了 &#39;"St John\"s Wort"&#39; (注意两边的引号)
// 为数组加引号
$value = $db->quote(array(&#39;a&#39;, &#39;b&#39;, &#39;c&#39;));
// $value 现在变成了 &#39;"a", "b", "c"&#39; (","分隔的字符串)
Copier après la connexion

quoteInto usage

echo $where = $db->quoteInto(&#39;id = ?&#39;, 1);
// $where 现在为 &#39;id = "1"&#39; (注意两边的引号)
// 在where语句中为数组加上引号
$where = $db->quoteInto(&#39;id IN(?)&#39;, array(1, 2, 3));
// $where 现在为 &#39;id IN("1", "2", "3")&#39; (一个逗号分隔的字符串)
Copier après la connexion

(1) Résumé de requête de données

Requête directe (Utilisez l'instruction SQL complète)

//function quoteInto($text, $value, $type = null, $count = null)
$db = $this->getAdapter();
$sql = $db->quoteInto(&#39;SELECT * FROM `m_video` WHERE `is_guo` =?&#39;, &#39;1&#39;);
$result = $db->query($sql);
// 使用PDOStatement对象$result将所有结果数据放到一个数组中
$videoArray = $result->fetchAll();
Copier après la connexion

FetchAll utilisation

fetchAll($where = null, $order = null, $count = null, $offset = null)

Récupérez les valeurs de tous les champs de l'ensemble de résultats et renvoyez-les sous forme de tableau continu Si le paramètre n'est pas défini, écrivez-le comme null

Vous pouvez récupérer le. nombre spécifié d'entrées dans l'ensemble de résultats

$videoArray=$this->fetchAll("is_jian=1 and is_guo=1","id DESC",0,2)->toArray();
Copier après la connexion

utilisation fetchAssoc

fetchAssoc($sql, $bind = array())

Récupérer les valeurs de tous les champs du ensemble de résultats et le renvoie sous forme de tableau associatif. Le premier champ est utilisé comme code

$db = $this->getAdapter();
$videoArray=$db->fetchAssoc("SELECT * FROM m_video WHERE `is_jian` = :title",array(&#39;title&#39; => &#39;1&#39;));
Copier après la connexion

utilisation fetchCol

fetchCol($sql, $bind = array())

Obtenir. le premier nom de champ de toutes les lignes de résultats

$db = $this->getAdapter();
$videoArray=$db->fetchCol("SELECT name FROM m_video WHERE `is_jian` = :title",array(&#39;title&#39; => &#39;1&#39;));
Copier après la connexion

utilisation de fetchOne

fetchOne($sql, $bind = array())

Récupérer uniquement la première valeur du champ

$db = $this->getAdapter();
echo $videoArray=$db->fetchOne("SELECT count(*) FROM m_video WHERE `is_jian` = :title",array(&#39;title&#39; => &#39;1&#39;));
Copier après la connexion

Utilisation de fetchPairs

fetchPairs($sql, $bind = array())

Récupérer un tableau associé, la première valeur du champ est le code (id), le deuxième champ est la valeur (nom)

Retour : Array( [1] = > Zodiac Romance [2] => Peach Blossom Luck), 1,2 : sont les champs d'identification

$db = $this->getAdapter();
$videoArray=$db->fetchPairs("SELECT id, name FROM m_video WHERE is_jian = :title",array(&#39;title&#39; => &#39;1&#39;));
Copier après la connexion

Utilisation fetchRow

fetchRow($where = null, $order = null)

Récupérer uniquement la première ligne de l'ensemble de résultats

$videoArray=$this->fetchRow("is_jian=1 and is_guo=1", &#39;id DESC&#39;)->toArray();
Copier après la connexion

Utilisation des requêtes

//function query($sql, $bind = array())
$db = $this->getAdapter();
$result = $db->query(&#39;SELECT * FROM `m_video`&#39;);
//$result = $db->query(&#39;SELECT * FROM `m_video` WHERE `name` = ? AND id = ?&#39;,array(&#39;十二生肖奇缘&#39;, &#39;1&#39;));
//$result->setFetchMode(Zend_Db::FETCH_OBJ);//FETCH_OBJ为默认值,FETCH_NUM,FETCH_BOTH
//while ($row = $result->fetch()) {
//  echo $row[&#39;name&#39;];
//}
//$rows = $result->fetch();
//$rows = $result->fetchAll();
//$obj = $result->fetchObject();//echo $obj->name;
// echo $Column = $result->fetchColumn(0);//得到结果集的第一个字段,比如0为id号,用于只取一个字段的情况
print_r($rows);
Copier après la connexion

sélectionnez l'utilisation

$db = $this->getAdapter();
$select = $db->select();
$select->from(&#39;m_video&#39;, array(&#39;id&#39;,&#39;name&#39;,&#39;clicks&#39;))
->where(&#39;is_guo = :is_guo and name = :name&#39;)
->order(&#39;name&#39;)// 按什么排序列,参加为数组(多个字段)或字符串(一个字段)
->group()//分组
->having()//分组查询数据的条件
->distinct()// 无参数,去掉重复的值。有时候与groupby返回的结果一样
->limit(10);
// 读取结果使用绑定的参数
$params = array(&#39;is_guo&#39; => &#39;1&#39;,&#39;name&#39;=>&#39;十二生肖奇缘&#39;);
//$sql = $select->__toString();//得到查询语句,可供调试
$result = $db->fetchAll($select,$params);
执行select的查询
$stmt = $db->query($select);
$result = $stmt->fetchAll();
Copier après la connexion

ou utilisez

$stmt = $select->query();
$result = $stmt->fetchAll();
Copier après la connexion

Si vous utilisez

$db->fetchAll($select)
Copier après la connexion

directement, le le résultat est le même

Utilisation de la requête conjointe multi-tables

$db = $this->getAdapter();
$select = $db->select();
$select->from(&#39;m_video&#39;, array(&#39;id&#39;,&#39;name&#39;,&#39;pic&#39;,&#39;actor&#39;,&#39;type_id&#39;,&#39;up_time&#39;))
->where(&#39;is_guo = :is_guo and is_jian = :is_jian&#39;)
->order(&#39;up_time&#39;)
->limit(2);
$params = array(&#39;is_guo&#39; => &#39;1&#39;,&#39;is_jian&#39;=>&#39;1&#39;);
$select->join(&#39;m_type&#39;, &#39;m_video.type_id = m_type.t_id&#39;, &#39;type_name&#39;);//多表联合查询
$videoArray = $db->fetchAll($select,$params);
Copier après la connexion

méthode find(), vous pouvez utiliser la valeur de la clé primaire pour récupérer les données dans la table .

// 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));
Copier après la connexion

(2) Résumé de la suppression des données

Première méthode : vous pouvez supprimer n'importe quelle table

//quoteInto($text, $value, $type = null, $count = null)
$table = &#39;m_video&#39;;// 设定需要删除数据的表
$db = $this->getAdapter();
$where = $db->quoteInto(&#39;name = ?&#39;, &#39;ccc&#39;);// 删除数据的where条件语句
echo $rows_affected = $db->delete($table, $where);// 删除数据并得到影响的行数
Copier après la connexion

Deuxième méthode : Vous ne pouvez supprimer que

//delete用法
// delete($where)
$where = "name = &#39;bbb&#39;";
echo $this->delete($where);// 删除数据并得到影响的行数
Copier après la connexion
< dans ce tableau 🎜>

(3) Résumé de la mise à jour des données

Le premier méthode : vous pouvez mettre à jour n'importe quelle table

// 以"列名"=>"数据"的格式构造更新数组,更新数据行
$table = &#39;m_video&#39;;// 更新的数据表
$db = $this->getAdapter();
$set = array (
&#39;name&#39; => &#39;蝶影重重&#39;,
&#39;clicks&#39; => &#39;888&#39;,
);
$where = $db->quoteInto(&#39;id = ?&#39;, &#39;10&#39;);// where语句
// 更新表数据,返回更新的行数
echo $rows_affected = $db->update($table, $set, $where);
Copier après la connexion

La deuxième méthode Méthode : uniquement

$set = array (
&#39;name&#39; => &#39;蝶影重重22&#39;,
&#39;clicks&#39; => &#39;8880&#39;,
);
$db = $this->getAdapter();
$where = $db->quoteInto(&#39;id = ?&#39;, &#39;10&#39;);// where语句
$rows_affected = $this->update($set, $where);// 更新表数据,返回更新的行数
Copier après la connexion


(4) Résumé de l'insertion des données

La première méthode : vous pouvez insérer des données dans n'importe quel tableau


$table = &#39;m_gao&#39;;// 插入数据的数据表
$db = $this->getAdapter();
// 以"列名"=>"数据"的格式格式构造插入数组,插入数据行
$row = array (
&#39;title&#39;   => &#39;大家好。111&#39;,
&#39;content&#39; => &#39;影视网要改成用zend framework开发啊&#39;,
&#39;time&#39; => &#39;2009-05-04 17:23:36&#39;,
);
// 插入数据行并返回插入的行数
$rows_affected = $db->insert($table, $row);
// 最后插入的数据id
echo $last_insert_id = $db->lastInsertId();
$row=array(
&#39;name&#39;=>&#39;curdate()&#39;,
&#39;address&#39; => new Zend_Db_Expr (&#39;curdate()&#39;)
)
Copier après la connexion
De cette façon, le nom du sous-champ insérera une chaîne de curdate(), et l'adresse Insérera une valeur temporelle (résultat de curdate() 2009-05-09)

La deuxième méthode : ne peut convenir que pour ce qui est dans ce tableau et n'a pas encore été résumé

(5) Traitement des transactions

$table = &#39;m_gao&#39;;// 插入数据的数据表
$db = $this->getAdapter();
$db->beginTransaction();//Zend_Db_Adapter会回到自动commit模式下,直到你再次调用 beginTransaction()方法
// 以"列名"=>"数据"的格式格式构造插入数组,插入数据行
$row = array (
&#39;id&#39;=>null,
&#39;title&#39;   => &#39;大家好。111&#39;,
&#39;content&#39; => &#39;影视网要改成用zend framework开发啊&#39;,
&#39;time&#39; => &#39;2009-05-04 17:23:36&#39;,
);
try {
// 插入数据行并返回插入的行数
$rows_affected = $db->insert($table, $row);
// 最后插入的数据id
$last_insert_id = $db->lastInsertId();
$db->commit();// 事务提交
}catch (Exception $e){
$db->rollBack();
echo &#39;捕获异常:&#39;.$e->getMessage();//打出异常信息
}
echo $last_insert_id;
Copier après la connexion

(6) Autres

$db = $this->getAdapter();
$tables = $db->listTables(); //列出当前数据库中的所有表
$fields = $db->describeTable(&#39;m_video&#39;);//列出一个表的字段情况
Copier après la connexion
Pour plus d'articles sur le résumé des compétences en matière d'exploitation de la base de données Zend Framework, veuillez prêter attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal