Home Backend Development PHP Tutorial Summary of Zend Framework database operation skills

Summary of Zend Framework database operation skills

May 25, 2018 pm 04:51 PM
framework zend Database 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为正序。
Copy after login

Routing file:

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

index.phtml file:

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

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

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

(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();
Copy after login

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();
Copy after login

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;));
Copy after login

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;));
Copy after login

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;));
Copy after login

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;));
Copy after login

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();
Copy after login

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);
Copy after login

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();
Copy after login

or use

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

If you use

$db->fetchAll($select)
Copy after login

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);
Copy after login

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));
Copy after login

(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);// 删除数据并得到影响的行数
Copy after login

The second method: you can only delete this table

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

(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);
Copy after login

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


(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;)
)
Copy after login

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;
Copy after login

(6)Others

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

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

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Microsoft NET Framework Installation Issues Error Code 0x800c0006 Fix Microsoft NET Framework Installation Issues Error Code 0x800c0006 Fix May 05, 2023 pm 04:01 PM

.NET Framework 4 is required by developers and end users to run the latest versions of applications on Windows. However, while downloading and installing .NET Framework 4, many users complained that the installer stopped midway, displaying the following error message - " .NET Framework 4 has not been installed because Download failed with error code 0x800c0006 ". If you are also experiencing it while installing .NETFramework4 on your device then you are at the right place

How to identify Windows upgrade issues using SetupDiag on Windows 11/10 How to identify Windows upgrade issues using SetupDiag on Windows 11/10 Apr 17, 2023 am 10:07 AM

Whenever your Windows 11 or Windows 10 PC has an upgrade or update issue, you will usually see an error code indicating the actual reason behind the failure. However, sometimes confusion can arise when an upgrade or update fails without an error code being displayed. With handy error codes, you know exactly where the problem is so you can try to fix it. But since no error code appears, it becomes challenging to identify the issue and resolve it. This will take up a lot of your time to simply find out the reason behind the error. In this case, you can try using a dedicated tool called SetupDiag provided by Microsoft that helps you easily identify the real reason behind the error.

SCNotification has stopped working [5 steps to fix it] SCNotification has stopped working [5 steps to fix it] May 17, 2023 pm 09:35 PM

As a Windows user, you are likely to encounter SCNotification has stopped working error every time you start your computer. SCNotification.exe is a Microsoft system notification file that crashes every time you start your PC due to permission errors and network failures. This error is also known by its problematic event name. So you might not see this as SCNotification having stopped working, but as bug clr20r3. In this article, we will explore all the steps you need to take to fix SCNotification has stopped working so that it doesn’t bother you again. What is SCNotification.e

How to use CodeIgniter4 framework in php? How to use CodeIgniter4 framework in php? May 31, 2023 pm 02:51 PM

PHP is a very popular programming language, and CodeIgniter4 is a commonly used PHP framework. When developing web applications, using frameworks is very helpful. It can speed up the development process, improve code quality, and reduce maintenance costs. This article will introduce how to use the CodeIgniter4 framework. Installing the CodeIgniter4 framework The CodeIgniter4 framework can be downloaded from the official website (https://codeigniter.com/). Down

How to use Pagoda Panel for MySQL management How to use Pagoda Panel for MySQL management Jun 21, 2023 am 09:44 AM

Pagoda Panel is a powerful panel software that can help us quickly deploy, manage and monitor servers, especially small businesses or individual users who often need to build websites, database management and server maintenance. Among these tasks, MySQL database management is an important job in many cases. So how to use the Pagoda panel for MySQL management? Next, we will introduce it step by step. Step 1: Install Pagoda Panel. Before starting to use Pagoda Panel for MySQL management, you first need to install Pagoda Panel.

How to use PHP scripts to perform database operations in Linux environment How to use PHP scripts to perform database operations in Linux environment Oct 05, 2023 pm 03:48 PM

How to use PHP to perform database operations in a Linux environment. In modern web applications, the database is an essential component. PHP is a popular server-side scripting language that can interact with various databases. This article will introduce how to use PHP scripts for database operations in a Linux environment and provide some specific code examples. Step 1: Install the Necessary Software and Dependencies Before starting, we need to ensure that PHP and related dependencies are installed in the Linux environment. usually

Microsoft .NET Framework 4.5.2, 4.6, and 4.6.1 will end support in April 2022 Microsoft .NET Framework 4.5.2, 4.6, and 4.6.1 will end support in April 2022 Apr 17, 2023 pm 02:25 PM

Microsoft Windows users who have installed Microsoft.NET version 4.5.2, 4.6, or 4.6.1 must install a newer version of the Microsoft Framework if they want Microsoft to support the framework through future product updates. According to Microsoft, all three frameworks will cease support on April 26, 2022. After the support date ends, the product will not receive "security fixes or technical support." Most home devices are kept up to date through Windows updates. These devices already have newer versions of frameworks installed, such as .NET Framework 4.8. Devices that are not updating automatically may

KB5012643 for Windows 11 breaks .NET Framework 3.5 apps KB5012643 for Windows 11 breaks .NET Framework 3.5 apps May 09, 2023 pm 01:07 PM

It's been a week since we talked about the new safe mode bug affecting users who installed KB5012643 for Windows 11. This pesky issue didn't appear on the list of known issues Microsoft posted on launch day, thus catching everyone by surprise. Well, just when you thought things couldn't get any worse, Microsoft drops another bomb for users who have installed this cumulative update. Windows 11 Build 22000.652 causes more problems So the tech company is warning Windows 11 users that they may experience problems launching and using some .NET Framework 3.5 applications. Sound familiar? But please don't be surprised

See all articles