Heim Backend-Entwicklung PHP-Tutorial php调用mysql存储过程实例分析_php技巧

php调用mysql存储过程实例分析_php技巧

May 16, 2016 pm 08:26 PM
mysql php 存储过程 调用

本文实例分析了php调用mysql存储过程的方法。分享给大家供大家参考。具体分析如下:

Mysql存储过程创建语法,代码如下:

CREATE PROCEDURE和CREATE FUNCTION :

复制代码 代码如下:
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
 
    [characteristic ...] routine_body
 
CREATE FUNCTION sp_name ([func_parameter[,...]])
 
    RETURNS type
 
    [characteristic ...] routine_body
 
    proc_parameter:
 
    [ IN | OUT | INOUT ] param_name type
 
    func_parameter:
 
    param_name type
 
type:
 
    Any valid MySQL data type
 
characteristic:
 
    LANGUAGE SQL
 
  | [NOT] DETERMINISTIC
 
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
 
  | SQL SECURITY { DEFINER | INVOKER }
 
  | COMMENT 'string'
 
routine_body:
 
    Valid SQL procedure statement or statements

当我们看完以后,就可以开始写一些简单的存储过程了,首先建立存储过程, Create procedure(子程序)、Create function(函数),代码如下:
复制代码 代码如下:
Create procedure sp_Name ([proc_parameter ])
routine_body

这里的参数类型可以是 IN OUT INOUTT,意思和单词的意思是一样的,IN 表示是传进来的参数,OUT 是表示传出去的参数,INOUT 是表示传进来但最终传回的参数,代码如下:

复制代码 代码如下:
Create functionsp_Name ([func_parameter ])
Returns type
Routine_body

Returns type 指定了返回的类型,这里给定的类型与返回值的类型要是一样的,否则会报错,下面是一个简单的例子,代码如下:

复制代码 代码如下:
mysql> delimiter //
mysql> create procedure g
    -> begin
    -> select version() i
    -> end
    -> //
Query OK, 0 rows affected
 
mysql> call getversion(@a
    -> //
Query OK, 0 rows affected
 
mysql> select @a;
    -> //
+---------------------+
| @a                  |
+---------------------+
| 5.0.45-community-nt |
+---------------------+
1 row in set (0.05 sec)

一个获取当前mysql版本的存储过程.那么php怎么与mysql的存储过程相结合呢.以下来自百度知道,代码如下:
复制代码 代码如下:
Drop table if exists user;  
    Create table user(  
        Id int unsigned not null auto_increment,  
        Name varchar(20) not null,  
        Pwd char(32) not null,  
        Primary key(Id)  
);

添加用户的存储过程,代码如下:
复制代码 代码如下:
Delimiter //  
    Create procedure insertuser(in username varchar(20),in userpwd varchar(32))  
    Begin  
        Insert into welefen.user(Name,Pwd) values (username,md5(userpwd));  
    End  
    //

验证用户的存储过程,代码如下:
复制代码 代码如下:
Delimiter //  
    Create procedure validateuser(in username varchar(20),out param1)  
    Begin   
        Select Pwd into param1 from welefen.user where Name=username;  
    End  
    //

修改密码的存储过程,代码如下:
复制代码 代码如下:
Delimiter //  
    Create procedure modifyPwd(in username varchar(20),in userpwd varchar(32))  
    Begin  
        Update welefen.user set Pwd=md5(userpwd) where Name=username;  
    End  
    //

删除用户的存储过程,代码如下:
复制代码 代码如下:
Delimiter //  
    Create procedure deleteuser(in username varchar(20)) 
Begin  
         delete from welefen.user where Name=username;  
    End  
    //

在客户端,我们给出如下的程序,代码如下:
复制代码 代码如下:
     if (!mysql_connect("localhost","root","welefen")){   
         echo "连接数据库失败";  
    }  
     if (!mysql_select_db("welefen")){  
         echo "选择数据库表失败
";  
    }  
      
    $insert_user=array("welefen","welefen");//这里的welefen分别为用户名、密码  
     if (mysql_query("call insertuser('$insert_user[0]','$insert_user[1]')")){  
         echo "添加用户$insert_user[0]成功
";  
    }else {  
         echo "添加用户$insert_user[0]失败
";  
    }  
      
    $validate_user=array("welefen","welefen");//这里的welefen分别为用户名、密码  
    mysql_query("call validateuser('$validate_user[0]',@a)");  
    $Pwd=mysql_query("select @a");  
    $result=mysql_fetch_array($Pwd);  
     if ($result[0]==md5($validate_user[1])){  
         echo "用户$validate_user[0]验证正确
";  
    }else {  
         echo "用户$validate_user[0]验证错误
";  
    }  
      
    $modify_Pwd=array("welefen","weilefeng"); //welefen为用户名weilefeng为新密码  
     if (mysql_query("call modifyPwd('$modify_Pwd[0]','$modify_Pwd[1]')")){ 
         echo "用户$modigy_Pwd[0]的密码修改成功
";  
    }else {
         echo "用户$modigy_Pwd[0]的密码修改失败
";  
    }  
      
    $delete_user=array("welefen");           //welefen为用户名  
     if (mysql_query("call deleteuser('$delete_user[0]')")){  
         echo "用户$delete_user[0]删除成功
";  
    }else {  
         echo "用户$delete_user[0]删除失败
";  
    }  
?>

这样就完成了,php调用mysql的存储过程,其实这些简单的应用,就用不上存储过程了,实际的应用是比这个复杂的多,可以看出,建立了mysql的存储过程可以极大的减少了客服端的压力,但是增加了数据库服务的压力,各种利弊得实际去衡量.

希望本文所述对大家的php程序设计有所帮助。

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man MySQL löst, kann nicht gestartet werden Wie man MySQL löst, kann nicht gestartet werden Apr 08, 2025 pm 02:21 PM

Es gibt viele Gründe, warum MySQL Startup fehlschlägt und durch Überprüfung des Fehlerprotokolls diagnostiziert werden kann. Zu den allgemeinen Ursachen gehören Portkonflikte (prüfen Portbelegung und Änderung der Konfiguration), Berechtigungsprobleme (Überprüfen Sie den Dienst Ausführen von Benutzerberechtigungen), Konfigurationsdateifehler (Überprüfung der Parametereinstellungen), Datenverzeichniskorruption (Wiederherstellung von Daten oder Wiederaufbautabellenraum), InnoDB-Tabellenraumprobleme (prüfen IBDATA1-Dateien), Plug-in-Ladeversagen (Überprüfen Sie Fehlerprotokolle). Wenn Sie Probleme lösen, sollten Sie sie anhand des Fehlerprotokolls analysieren, die Hauptursache des Problems finden und die Gewohnheit entwickeln, Daten regelmäßig zu unterstützen, um Probleme zu verhindern und zu lösen.

Braucht MySQL das Internet? Braucht MySQL das Internet? Apr 08, 2025 pm 02:18 PM

MySQL kann ohne Netzwerkverbindungen für die grundlegende Datenspeicherung und -verwaltung ausgeführt werden. Für die Interaktion mit anderen Systemen, Remotezugriff oder Verwendung erweiterte Funktionen wie Replikation und Clustering ist jedoch eine Netzwerkverbindung erforderlich. Darüber hinaus sind Sicherheitsmaßnahmen (wie Firewalls), Leistungsoptimierung (Wählen Sie die richtige Netzwerkverbindung) und die Datensicherung für die Verbindung zum Internet von entscheidender Bedeutung.

Der Hauptschlüssel von MySQL kann null sein Der Hauptschlüssel von MySQL kann null sein Apr 08, 2025 pm 03:03 PM

Der MySQL -Primärschlüssel kann nicht leer sein, da der Primärschlüssel ein Schlüsselattribut ist, das jede Zeile in der Datenbank eindeutig identifiziert. Wenn der Primärschlüssel leer sein kann, kann der Datensatz nicht eindeutig identifiziert werden, was zu Datenverwirrung führt. Wenn Sie selbstsinkrementelle Ganzzahlsspalten oder UUIDs als Primärschlüssel verwenden, sollten Sie Faktoren wie Effizienz und Raumbelegung berücksichtigen und eine geeignete Lösung auswählen.

Kann MySQL JSON zurückgeben? Kann MySQL JSON zurückgeben? Apr 08, 2025 pm 03:09 PM

MySQL kann JSON -Daten zurückgeben. Die JSON_EXTRACT -Funktion extrahiert Feldwerte. Über komplexe Abfragen sollten Sie die Where -Klausel verwenden, um JSON -Daten zu filtern, aber auf die Leistungsauswirkungen achten. Die Unterstützung von MySQL für JSON nimmt ständig zu, und es wird empfohlen, auf die neuesten Versionen und Funktionen zu achten.

Kann MySQL auf Android laufen? Kann MySQL auf Android laufen? Apr 08, 2025 pm 05:03 PM

MySQL kann nicht direkt auf Android ausgeführt werden, kann jedoch indirekt mit den folgenden Methoden implementiert werden: Die Verwendung der Leichtgewichtsdatenbank SQLite, die auf dem Android -System basiert, benötigt keinen separaten Server und verfügt über eine kleine Ressourcennutzung, die für Anwendungen für Mobilgeräte sehr geeignet ist. Stellen Sie sich remote eine Verbindung zum MySQL -Server her und stellen Sie über das Netzwerk zum Lesen und Schreiben von Daten über das Netzwerk eine Verbindung zur MySQL -Datenbank auf dem Remote -Server her. Es gibt jedoch Nachteile wie starke Netzwerkabhängigkeiten, Sicherheitsprobleme und Serverkosten.

Muss MySQL bezahlen? Muss MySQL bezahlen? Apr 08, 2025 pm 05:36 PM

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Apr 08, 2025 pm 06:03 PM

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

Benötigt MySQL einen Server? Benötigt MySQL einen Server? Apr 08, 2025 pm 02:12 PM

Für Produktionsumgebungen ist in der Regel ein Server erforderlich, um MySQL auszuführen, aus Gründen, einschließlich Leistung, Zuverlässigkeit, Sicherheit und Skalierbarkeit. Server haben normalerweise leistungsstärkere Hardware, redundante Konfigurationen und strengere Sicherheitsmaßnahmen. Bei kleinen Anwendungen mit niedriger Last kann MySQL auf lokalen Maschinen ausgeführt werden, aber Ressourcenverbrauch, Sicherheitsrisiken und Wartungskosten müssen sorgfältig berücksichtigt werden. Für eine größere Zuverlässigkeit und Sicherheit sollte MySQL auf Cloud oder anderen Servern bereitgestellt werden. Die Auswahl der entsprechenden Serverkonfiguration erfordert eine Bewertung basierend auf Anwendungslast und Datenvolumen.

See all articles