Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menggunakan prosedur tersimpan dalam php+mysql

Bagaimana untuk menggunakan prosedur tersimpan dalam php+mysql

PHPz
PHPzasal
2023-04-17 16:41:10411semak imbas

MySQL dan PHP ialah dua teknologi yang biasa digunakan dalam pembangunan laman web. Antaranya, MySQL adalah sistem pengurusan pangkalan data, bertanggungjawab untuk penyimpanan dan pengurusan data PHP adalah bahasa skrip sebelah pelayan, digunakan untuk menjana kandungan halaman web. Dalam beberapa senario perniagaan yang kompleks, prosedur tersimpan perlu digunakan untuk melengkapkan beberapa operasi data tertentu Artikel ini akan memperkenalkan penggunaan prosedur tersimpan daripada MySQL dan PHP.

1. Prosedur tersimpan MySQL

Prosedur tersimpan MySQL ialah himpunan penyata SQL terkumpul yang boleh digunakan untuk melaksanakan beberapa logik perniagaan tertentu. Berbanding dengan menulis logik perniagaan yang serupa pada lapisan aplikasi, menggunakan prosedur tersimpan boleh memindahkan logik ini ke peringkat pangkalan data, menjimatkan masa penghantaran rangkaian dan meningkatkan prestasi. Berikut ialah prosedur tersimpan MySQL yang mudah:

CREATE PROCEDURE `my_proc`(IN `p_id` INT, OUT `p_name` VARCHAR(20))
BEGIN
    SELECT `name` INTO `p_name` FROM `users` WHERE `id` = `p_id`;
END

Prosedur tersimpan ini menerima parameter integer p_id dan memberikan nama pengguna yang sepadan kepada parameter output p_name. Apabila memanggil prosedur tersimpan ini pada lapisan aplikasi, anda hanya perlu lulus parameter p_id untuk mendapatkan nama pengguna yang sepadan. Kelebihan menggunakan prosedur tersimpan ialah pada kali prosedur tersimpan dipanggil, enjin MySQL telah pun menyusun prosedur ke dalam kod mesin, dan tidak perlu menghuraikan pernyataan SQL sekali lagi, jadi kecekapan pelaksanaan lebih tinggi.

2. PHP memanggil prosedur tersimpan MySQL

Dalam pembangunan PHP, menggunakan prosedur tersimpan boleh mengurangkan masa operasi pangkalan data. Berikut ialah kod PHP yang memanggil prosedur tersimpan MySQL di atas:

<?php
// 连接MySQL数据库
$db = new mysqli(&#39;localhost&#39;, &#39;user&#39;, &#39;password&#39;, &#39;test&#39;);
if ($db->connect_errno) {
    die('Connect Error:' . $db->connect_error);
}

// 准备存储过程的参数和调用语句
$id = 1;
$p_name = '';
$sql = "CALL my_proc($id, @p_name)";

// 执行调用语句
if ($db->multi_query($sql)) {
    // 获取输出参数
    $db->next_result();
    $result = $db->query("SELECT @p_name AS `name`");
    $row = $result->fetch_assoc();
    $p_name = $row['name'];

    // 输出查询结果
    echo "User $id's name is $p_name";
} else {
    echo "Call Procedure Error:" . $db->error;
}

// 关闭数据库连接
$db->close();
?>

Dalam kod PHP ini, pangkalan data MySQL mula-mula disambungkan, dan kemudian parameter input dan penyataan panggilan prosedur tersimpan disediakan. Oleh kerana hasil pertanyaan yang dijana dengan memanggil prosedur tersimpan adalah output melalui parameter OUT, beberapa pernyataan SQL perlu dilaksanakan untuk mendapatkan hasil pertanyaan: mula-mula laksanakan pernyataan panggilan, kemudian laksanakan pernyataan SELECT, dan akhirnya dapatkan parameter output p_name. Selepas panggilan selesai, tutup sahaja sambungan pangkalan data.

Ringkasan

Dalam logik perniagaan yang kompleks, menggunakan prosedur tersimpan MySQL boleh memindahkan beberapa logik ke peringkat pangkalan data, meningkatkan kecekapan operasi dan kelajuan tindak balas sistem. Apabila PHP memanggil prosedur tersimpan MySQL, anda perlu memberi perhatian kepada parameter input dan parameter output prosedur tersimpan, dan melaksanakan berbilang penyata SQL untuk mendapatkan hasil pertanyaan. Dengan cara ini, dalam amalan, menggabungkan prosedur tersimpan MySQL dan pembangunan PHP boleh mengendalikan operasi pangkalan data dengan lebih mudah dan meningkatkan kecekapan.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan prosedur tersimpan dalam php+mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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