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文件:
<?php foreach ($this->get2Video as $video): ?> <?=$video['id']; ?> <?=$video['name']; ?> <? endforeach; ?>
添加引号防止数据库攻击
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"' (tener en cuenta las comillas en ambos lados)"}} // poner comillas en el array en la declaración where $where = $db->quoteInto('id IN(?)', array(1, 2, 3)); // $where ahora es 'id IN("1", "2", "3")' (una cadena separada por comas)
(1)resumen de la consulta de datos
realizar una consulta directa. (Usar una语句 sql completa)
//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); // usar el objeto PDOStatement $result para poner todos los datos de resultados en un array $videoArray = $result->fetchAll();
usos de fetchAll
fetchAll($where = null, $order = null, $count = null, $offset = null)
recuperar todos los valores de los campos del conjunto de resultados, devueltos como un array continuo, si no se establece el parámetro, se escribe como null
puede recuperar una cantidad específica de filas del conjunto de resultados
$videoArray=$this->fetchAll("is_jian=1 and is_guo=1","id DESC",0,2)->toArray();
usos de fetchAssoc
fetchAssoc($sql, $bind = array())
recuperar todos los valores de los campos del conjunto de resultados, devueltos como un array asociativo, el primer campo como clave
$db = $this->getAdapter(); $videoArray=$db->fetchAssoc("SELECT * FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
usos de fetchCol
fetchCol($sql, $bind = array())
recuperar el nombre del primer campo de todas las filas de resultados
$db = $this->getAdapter(); $videoArray=$db->fetchCol("SELECT name FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
usos de fetchOne
fetchOne($sql, $bind = array())
solo tomar el valor del primer campo
$db = $this->getAdapter(); echo $videoArray=$db->fetchOne("SELECT count(*FROM m_video WHERE `is_jian` = :title",array('title' => '1'));
fetchPairs用法
fetchPairs($sql, $bind = array())
recupera un array relacionado, el primer campo es el código (id), el segundo campo es el valor (name)
devuelve: Array( [1] => doce signos del zodíaco [2] => fortuna de la peach),1,2: para el campo 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('doce signos del zodíaco', '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')// Por qué ordenar la lista, participate en el array (múltiples campos) o la cadena (un campo) ->group()//Agrupar ->having()//Condiciones para la consulta de agrupamiento de datos ->distinct()// Sin parámetros, elimina los valores repetidos. A veces, los resultados son los mismos que los devueltos por groupby ->limit(10); // Leer los resultados usando los parámetros enlazados $params = array('is_guo' => '"1','name'=>'El destino de los doce animales'); //$sql = $select->__toString();//Obtener la sentencia de consulta, disponible para depuración $result = $db->fetchAll($select,$params); Ejecutar la consulta de select $stmt = $db->query($select); $result = $stmt->fetchAll();
o usar
$stmt = $select->query(); $result = $stmt->fetchAll();
Si se utiliza directamente
$db->fetchAll($select)
Los resultados son los mismos
Uso de la consulta combinada de múltiples tablas
$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');//Consulta combinada de múltiples tablas $videoArray = $db->fetchAll($select,$params);
El método find(), se puede usar el valor del clave principal para buscar datos en la tabla.
// 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)Resumen de eliminación de datos
El primer método: puede eliminar cualquier tabla
//quoteInto($text, $value, $type = null, $count = null) $table = 'm_video';// Establecer la tabla que se necesita eliminar los datos $db = $this->getAdapter(); $where = $db->quoteInto('name = '?// Condiciones where para eliminar datos echo $rows_affected = $db->delete($table, $where);// Eliminar datos y obtener el número de filas afectadas
Segunda manera: solo se puede eliminar en la tabla actual
//Uso de delete // delete($where) $where = "name = 'bbb'"; echo $this->delete($where);// Eliminar datos y obtener el número de filas afectadas
(3)Resumen de actualización de datos
Primera manera: se puede actualizar cualquier tabla
// Construir un array de actualización en el formato "nombre_de_columna"=>"dato", actualizar una fila de datos $table = 'm_video';// Tabla de datos actualizados $db = $this->getAdapter(); $set = array ( 'name' => 'Dianyingchongchong', 'clicks' => '888', ); $where = $db->quoteInto('id = '?10);// Sentencia where // Actualizar datos de la tabla, devolver el número de filas actualizadas echo $rows_affected = $db->update($table, $set, $where);
Segunda manera: solo se puede actualizar en la tabla actual
$set = array ( 'name' => 'Dianyingchongchong',22', 'clicks' => '8880, ); $db = $this->getAdapter(); $where = $db->quoteInto('id = '?10);// Sentencia where $rows_affected = $this->update($set, $where);// Actualizar datos de la tabla, devolver el número de filas actualizadas
(4)Resumen de inserción de datos
Primera manera: se puede insertar datos en cualquier tabla
$table = 'm_gao';// Tabla de datos para la inserción $db = $this->getAdapter(); // Construir un array de inserción en el formato "nombre_de_columna"=>"dato", insertar una fila de datos $row = array ( 'title' => 'Hola a todos.',111', 'content' => 'El sitio de cine debe desarrollarse utilizando zend framework', 'time' => '"}}2009-05-04 17:23:36', ); // Insertar filas de datos y devolver el número de filas insertadas $rows_affected = $db->insert($table, $row); // ID del último dato insertado echo $last_insert_id = $db->lastInsertId(); $row=array( 'name'=>'curdate()', 'address' => new Zend_Db_Expr ('curdate()') )
De esta manera, el campo name insertará una cadena de curdate() y address insertará un valor de tiempo (el resultado de curdate())2009-05-09)
Segunda manera: solo es adecuada para las tablas que aún no se han resumido
(5)Tratamiento de transacciones
$table = 'm_gao';// Tabla de datos para la inserción $db = $this->getAdapter(); $db->beginTransaction();//Zend_Db_Adapter regresa al modo de commit automático hasta que vuelvas a llamar al método beginTransaction() // Construir un array de inserción en el formato "nombre_de_columna"=>"dato", insertar una fila de datos $row = array ( 'id'=>null, 'title' => 'Hola a todos.',111', 'content' => 'El sitio de cine debe desarrollarse utilizando zend framework', 'time' => '"}}2009-05-04 17:23:36', ); try { // Insertar filas de datos y devolver el número de filas insertadas $rows_affected = $db->insert($table, $row); // ID del último dato insertado $last_insert_id = $db->lastInsertId(); $db->commit();// Confirmar transacción }catch (Exception $e){ $db->rollBack(); echo 'Captura de excepción: $e'->getMessage();//Imprimir información de excepción } echo $last_insert_id;
(6)otros
$db = $this->getAdapter(); $tables = $db->listTables(); //Enumerar todas las tablas en la base de datos actual $fields = $db->describeTable('m_video');//Enumerar el estado de los campos de una tabla
Los lectores interesados en más contenido relacionado con zend pueden consultar la sección especial de este sitio: 'Tutorial de Entrada de Framework Zend', 'Resumen de los Mejores Frameworks de Desarrollo PHP', 'Tutorial de Entrada de Framework Yii y Resumen de Técnicas Comunes', 'Tutorial de Entrada de ThinkPHP', 'Tutorial de Diseño de Programas Orientados a Objetos en PHP', 'php'+Tutorial de Operaciones Básicas de la Base de Datos MySQL y Resumen de Técnicas Comunes de Operaciones de Base de Datos PHP
Espero que lo descrito en este artículo pueda ayudar a todos a diseñar programas de PHP basados en el framework Zend.
Declaración: El contenido de este artículo se ha obtenido de la red, pertenece al propietario original, el contenido ha sido contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplaza # con @ para denunciar y proporciona pruebas relacionadas. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)