Rumah pembangunan bahagian belakang tutorial php 当PHP遇到MySQL存储过程

当PHP遇到MySQL存储过程

Jun 23, 2016 pm 01:47 PM

1、MySQL存储过程

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 

2、存储过程通常有以下优点:

(1)存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
(2)存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
(3)存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 
(4)存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
(5)存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

3、PHP调用MySQL案例

实例一:无参的存储过程

$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");mysql_select_db('test',$conn);$sql = "create procedure myproce()beginINSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');end; ";mysql_query($sql);//创建一个myproce的存储过程$sql = "call test.myproce();";mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。
Salin selepas log masuk
实例二:传入参数的存储过程

$sql = "create procedure myproce2(in score int)beginif score >= 60 thenselect 'pass';elseselect 'no';end if;end; ";mysql_query($sql);//创建一个myproce2的存储过程$sql = "call test.myproce2(70);";mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。
Salin selepas log masuk
实例三:传出参数的存储过程

$sql = "create procedure myproce3(out score int)beginset score=100;end; ";mysql_query($sql);//创建一个myproce3的存储过程$sql = "call test.myproce3(@score);";mysql_query($sql);//调用myproce3的存储过程$result = mysql_query('select @score;');$array = mysql_fetch_array($result);echo '<pre class="brush:php;toolbar:false">';print_r($array);
Salin selepas log masuk
实例四:传出参数的inout存储过程

$sql = "create procedure myproce4(inout sexflag int)beginSELECT * FROM user WHERE sex = sexflag;end; ";mysql_query($sql);//创建一个myproce4的存储过程$sql = "set @sexflag = 1";mysql_query($sql);//设置性别参数为1$sql = "call test.myproce4(@sexflag);";mysql_query($sql);//调用myproce4的存储过程,在cmd下面看效果
Salin selepas log masuk
实例五:使用变量的存储过程 

$sql = "create procedure myproce5(in a int,in b int)begindeclare s int default 0;set s=a+b;select s;end; ";mysql_query($sql);//创建一个myproce5的存储过程$sql = "call test.myproce5(4,6);";mysql_query($sql);//调用myproce5的存储过程,在cmd下面看效果
Salin selepas log masuk
实例六:case语法

$sql = "create procedure myproce6(in score int)begincase scorewhen 60 then select '及格';when 80 then select '及良好';when 100 then select '优秀';else select '未知分数';end case;end; ";mysql_query($sql);//创建一个myproce6的存储过程$sql = "call test.myproce6(100);";mysql_query($sql);//调用myproce6的存储过程,在cmd下面看效果
Salin selepas log masuk
实例七:循环语句

$sql = "create procedure myproce7()begindeclare i int default 0;declare j int default 0;while i实例八:repeat语句  <p></p>  <p></p>  <pre name="code" class="sycode">$sql = " create procedure myproce8()begindeclare i int default 0;declare j int default 0;repeatset j=j+i;set i=i+1;until j>=10end repeat;select j;end; ";mysql_query($sql);//创建一个myproce8的存储过程$sql = "call test.myproce8();";mysql_query($sql);//调用myproce8的存储过程,在cmd下面看效果
Salin selepas log masuk
实例九:loop语句

$sql = "create procedure myproce9()begindeclare i int default 0;declare s int default 0;loop_label:loopset s=s+i;set i=i+1;if i>=5 thenleave loop_label;end if;end loop;select s;end; ";mysql_query($sql);//创建一个myproce9的存储过程$sql = "call test.myproce9();";mysql_query($sql);//调用myproce9的存储过程,在cmd下面看效果
Salin selepas log masuk
实例十:删除存储过程

mysql_query("drop procedure if exists myproce");//删除test的存储过程
Salin selepas log masuk

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Cari muat turun fail di laravel dengan penyimpanan :: muat turun Cari muat turun fail di laravel dengan penyimpanan :: muat turun Mar 06, 2025 am 02:22 AM

Penyimpanan :: Kaedah Muat turun Rangka Kerja Laravel menyediakan API ringkas untuk mengendalikan muat turun fail dengan selamat sambil menguruskan abstraksi penyimpanan fail. Berikut adalah contoh menggunakan penyimpanan :: muat turun () dalam pengawal contoh:

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Terangkan konsep pengikatan statik lewat dalam PHP. Terangkan konsep pengikatan statik lewat dalam PHP. Mar 21, 2025 pm 01:33 PM

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Pembalakan PHP: Amalan Terbaik untuk Analisis Log PHP Pembalakan PHP: Amalan Terbaik untuk Analisis Log PHP Mar 10, 2025 pm 02:32 PM

Pembalakan PHP adalah penting untuk memantau dan menyahpepijat aplikasi web, serta menangkap peristiwa kritikal, kesilapan, dan tingkah laku runtime. Ia memberikan pandangan yang berharga dalam prestasi sistem, membantu mengenal pasti isu -isu, dan menyokong penyelesaian masalah yang lebih cepat

Cara mendaftar dan menggunakan penyedia perkhidmatan Laravel Cara mendaftar dan menggunakan penyedia perkhidmatan Laravel Mar 07, 2025 am 01:18 AM

Bekas perkhidmatan dan penyedia perkhidmatan Laravel adalah asas kepada seni bina. Artikel ini meneroka bekas perkhidmatan, butiran pembekal perkhidmatan, pendaftaran, dan menunjukkan penggunaan praktikal dengan contoh. Kita akan mulakan dengan ove

See all articles