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

Zusammenfassung der Kenntnisse im Datenbankbetrieb von Zend Framework

高洛峰
高洛峰Original
2018-05-25 16:51:541695Durchsuche

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[&#39;id&#39;]; ?>
<?=$video[&#39;name&#39;]; ?>
<? endforeach; ?>

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; (","分隔的字符串)
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; (一个逗号分隔的字符串)

(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();

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();

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;));

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;));

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;));

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;));

Abfragenutzung

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

$videoArray=$this->fetchRow("is_jian=1 and is_guo=1", &#39;id DESC&#39;)->toArray();
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);

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();

$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(&#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);

// 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 = &#39;m_video&#39;;// 设定需要删除数据的表
$db = $this->getAdapter();
$where = $db->quoteInto(&#39;name = ?&#39;, &#39;ccc&#39;);// 删除数据的where条件语句
echo $rows_affected = $db->delete($table, $where);// 删除数据并得到影响的行数

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

(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);

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


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;)
)

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

Stellungnahme:
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