search
HomeBackend DevelopmentPHP TutorialSummary of Zend Framework database operation skills

Summary of Zend Framework database operation skills

May 25, 2018 pm 04:51 PM
frameworkzendDatabase operations

This article mainly introduces the Zend Framework database operation skills, and summarizes and analyzes the common functions, common operations and related precautions of Zend Framework for database operations in the form of examples. Friends in need can refer to this article

Examples summarize Zend Framework database operations. Share it with everyone for your reference, the details are as follows:

Zend_Db database knowledge

Example:

Model file:

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

Routing file:

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

index.phtml file:

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

Add quotes to prevent database attacks

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

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

(1)Data query summary

Query directly. (Use complete sql statement)

//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 usage

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

Retrieve the values ​​of all fields in the result set and return them as a continuous array. If the parameter is not set, write it as null

can be retrieved The specified number of results in the result set

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

fetchAssoc usage

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

Retrieve the values ​​of all fields in the result set as an associative array, with the first field as the code

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

fetchCol usage

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

Get the first field name of all result rows

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

fetchOne usage

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

Only retrieve the first field value

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

fetchPairs usage

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

Retrieve a related array, the first field value is the code (id), the second field is the value (name )

Return: Array([1] => Zodiac Romance [2] => Romance), 1,2: are the id fields

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

fetchRow usage

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

Only retrieve the first row of the result set

$videoArray=$this->fetchRow("is_jian=1 and is_guo=1", &#39;id DESC&#39;)->toArray();

query usage

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

select usage

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

or use

$stmt = $select->query();
$result = $stmt->fetchAll();

If you use

$db->fetchAll($select)

directly, the result will be the same

Usage of multi-table joint query

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

find() method, you can use the primary key value to retrieve data in the 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));

(2) Data deletion summary

The first method: you can delete any 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);// 删除数据并得到影响的行数

The second method: you can only delete this table

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

(3) Data update summary

The first method: you can update any 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);

Second method: Only

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


(4) Data insertion summary## can be updated in this table

#The first method: you can insert data into any table

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

In this way, the subfield name will insert a curdate() character string, and address inserts a time value (the result of curdate() 2009-05-09)

The second method: it can only be suitable for the ones in this table and has not been summarized

(5)Transaction processing

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

(6)Others

$db = $this->getAdapter();
$tables = $db->listTables(); //列出当前数据库中的所有表
$fields = $db->describeTable(&#39;m_video&#39;);//列出一个表的字段情况
For more Zend Framework database operation skills summary related articles, please pay attention to the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
The Continued Use of PHP: Reasons for Its EnduranceThe Continued Use of PHP: Reasons for Its EnduranceApr 19, 2025 am 12:23 AM

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

PHP and Python: Exploring Their Similarities and DifferencesPHP and Python: Exploring Their Similarities and DifferencesApr 19, 2025 am 12:21 AM

PHP and Python are both high-level programming languages ​​that are widely used in web development, data processing and automation tasks. 1.PHP is often used to build dynamic websites and content management systems, while Python is often used to build web frameworks and data science. 2.PHP uses echo to output content, Python uses print. 3. Both support object-oriented programming, but the syntax and keywords are different. 4. PHP supports weak type conversion, while Python is more stringent. 5. PHP performance optimization includes using OPcache and asynchronous programming, while Python uses cProfile and asynchronous programming.

PHP and Python: Different Paradigms ExplainedPHP and Python: Different Paradigms ExplainedApr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP and Python: A Deep Dive into Their HistoryPHP and Python: A Deep Dive into Their HistoryApr 18, 2025 am 12:25 AM

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

Choosing Between PHP and Python: A GuideChoosing Between PHP and Python: A GuideApr 18, 2025 am 12:24 AM

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP and Frameworks: Modernizing the LanguagePHP and Frameworks: Modernizing the LanguageApr 18, 2025 am 12:14 AM

PHP remains important in the modernization process because it supports a large number of websites and applications and adapts to development needs through frameworks. 1.PHP7 improves performance and introduces new features. 2. Modern frameworks such as Laravel, Symfony and CodeIgniter simplify development and improve code quality. 3. Performance optimization and best practices further improve application efficiency.

PHP's Impact: Web Development and BeyondPHP's Impact: Web Development and BeyondApr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

How does PHP type hinting work, including scalar types, return types, union types, and nullable types?How does PHP type hinting work, including scalar types, return types, union types, and nullable types?Apr 17, 2025 am 12:25 AM

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values ​​and handle functions that may return null values.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools