Heim > Backend-Entwicklung > PHP-Tutorial > Zusammenfassung der Kenntnisse im Datenbankbetrieb von Zend Framework

Zusammenfassung der Kenntnisse im Datenbankbetrieb von Zend Framework

高洛峰
Freigeben: 2023-03-05 21:08:01
Original
1725 Leute haben es durchsucht

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为正序。
Nach dem Login kopieren

Routing-Datei:

$video=new Video();//实例化数据库类
$this->view->get2Video =$video->get2Video();//取到2条首页推荐的数据
Nach dem Login kopieren

index.phtml-Datei:

<?php foreach ($this->get2Video as $video): ?>
<?=$video[&#39;id&#39;]; ?>
<?=$video[&#39;name&#39;]; ?>
<? endforeach; ?>
Nach dem Login kopieren

Anführungszeichen hinzufügen, um Datenbankangriffe zu verhindern

Zitat-Nutzung

$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; (","分隔的字符串)
Nach dem Login kopieren
ZitatInto-Nutzung

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; (一个逗号分隔的字符串)
Nach dem Login kopieren

(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(&#39;SELECT * FROM `m_video` WHERE `is_guo` =?&#39;, &#39;1&#39;);
$result = $db->query($sql);
// 使用PDOStatement对象$result将所有结果数据放到一个数组中
$videoArray = $result->fetchAll();
Nach dem Login kopieren

fetchAll use

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

Rufen Sie die Werte aller Felder im Ergebnissatz ab und geben Sie sie als kontinuierliches Array zurück. Wenn der Parameter nicht festgelegt ist, schreiben Sie ihn als Null

Sie können die abrufen angegebene Anzahl von Einträgen im Ergebnissatz

$videoArray=$this->fetchAll("is_jian=1 and is_guo=1","id DESC",0,2)->toArray();
Nach dem Login kopieren

fetchAssoc-Nutzung

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

Ruft die Werte aller Felder im ab Ergebnismenge und Rückgabe als assoziatives Array. Das erste Feld wird als Code verwendet der erste Feldname aller Ergebniszeilen

$db = $this->getAdapter();
$videoArray=$db->fetchAssoc("SELECT * FROM m_video WHERE `is_jian` = :title",array(&#39;title&#39; => &#39;1&#39;));
Nach dem Login kopieren

fetchOne-Verwendung

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

Nur ​​den ersten Feldwert abrufen

$db = $this->getAdapter();
$videoArray=$db->fetchCol("SELECT name FROM m_video WHERE `is_jian` = :title",array(&#39;title&#39; => &#39;1&#39;));
Nach dem Login kopieren

fetchPairs-Verwendung

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

Rufen Sie ein zugehöriges Array ab. Der erste Feldwert ist der Code (ID), das zweite Feld ist der Wert (Name)

Return: Array( [1] = > Zodiac Romance [2] => Peach Blossom Luck), 1,2: sind die ID-Felder
$db = $this->getAdapter();
echo $videoArray=$db->fetchOne("SELECT count(*) FROM m_video WHERE `is_jian` = :title",array(&#39;title&#39; => &#39;1&#39;));
Nach dem Login kopieren

fetchRow-Nutzung

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

Nur ​​die erste Zeile des Ergebnissatzes abrufen

$db = $this->getAdapter();
$videoArray=$db->fetchPairs("SELECT id, name FROM m_video WHERE is_jian = :title",array(&#39;title&#39; => &#39;1&#39;));
Nach dem Login kopieren

Abfragenutzung

fetchRow($where = null, $order = null)Verwendung auswählen

$videoArray=$this->fetchRow("is_jian=1 and is_guo=1", &#39;id DESC&#39;)->toArray();
Nach dem Login kopieren
oder verwenden Sie

Wenn Sie

//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);
Nach dem Login kopieren

direkt verwenden, wird die Das Ergebnis ist dasselbe

Verwendung einer gemeinsamen Abfrage mit mehreren Tabellen
$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();
Nach dem Login kopieren

$stmt = $select->query();
$result = $stmt->fetchAll();
Nach dem Login kopieren
Mit der find()-Methode können Sie den Primärschlüsselwert verwenden, um Daten in der Tabelle abzurufen .

$db->fetchAll($select)
Nach dem Login kopieren

(2) Zusammenfassung der Datenlöschung

Erste Methode: Sie können jede Tabelle löschen

$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);
Nach dem Login kopieren

// 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));
Nach dem Login kopieren
Zweite Methode: Sie können nur

< in dieser Tabelle löschen 🎜>

(3) Datenaktualisierungszusammenfassung

Die erste Methode: Sie können jede Tabelle aktualisieren
//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);// 删除数据并得到影响的行数
Nach dem Login kopieren

Die zweite Methode Methode: Nur
//delete用法
// delete($where)
$where = "name = &#39;bbb&#39;";
echo $this->delete($where);// 删除数据并得到影响的行数
Nach dem Login kopieren

(4) Zusammenfassung der Dateneinfügung

// 以"列名"=>"数据"的格式构造更新数组,更新数据行
$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);
Nach dem Login kopieren

Die erste Methode: Sie können Daten in jede Tabelle einfügen

$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);// 更新表数据,返回更新的行数
Nach dem Login kopieren


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


(6) Andere
$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;)
)
Nach dem Login kopieren

Weitere zusammenfassende Artikel zu Zend Framework-Datenbankbetriebsfähigkeiten finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage