[英]Mysql Stored Procedure and Php
我創建了以下過程:
DROP PROCEDURE IF EXISTS add_com;
DELIMITER //
CREATE PROCEDURE add_com (cd CHAR(16), n VARCHAR(20), t VARCHAR(20), i VARCHAR(20))
BEGIN
DECLARE num INT;
DECLARE msg varchar(20);
set @num=select COUNT(*) from commercianti where codice_fiscale=cd;
IF num==0 THEN
insert into commercianti values (cd,n,i,t);
set @msg="Commerciante inserito";
ELSE
insert into errors values (1);
set @msg="Commerciante presente";
END IF;
return @msg;
END; //
然后在PHP頁面中執行以下代碼:
<?php
$cd=$_POST['codice_fiscale'];
$n=$_POST['nominativo'];
$t=$_POST['telefono'];
$i=$_POST['indirizzo'];
if(!$cd||!$n||!$t||!$i)
echo "No data";
else{
require dirname(__FILE__) . '/' . 'dbconfig.php';
$mysqli = new MySQLI(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$result = $mysqli->query("CALL add_com('$cd','$n','$t','$i')");
echo $result;
}
?>
但是$ result的值是不確定的,似乎該過程不起作用或沒有被調用。
如果要從例程中獲取數據,則應使用函數而不是過程。 它們具有幾乎相同的語法,但最值得注意的是聲明的RETURNS type
部分。 看一下官方文檔:
http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
注意,SECOND create塊中有一個與功能有關的塊。 第一個處理程序。
所以我認為這看起來像這樣:
DROP FUNCTION IF EXISTS add_com;
DELIMITER //
CREATE FUNCTION add_com (cd CHAR(16), n VARCHAR(20), t VARCHAR(20), i VARCHAR(20))
RETURNS VARCHAR(20)
BEGIN
DECLARE num INT;
DECLARE msg varchar(20);
SELECT COUNT(*) INTO @num FROM commercianti WHERE codice_fiscale = cd;
IF num==0 THEN
insert into commercianti values (cd,n,i,t);
set @msg="Commerciante inserito";
ELSE
insert into errors values (1);
set @msg="Commerciante presente";
END IF;
return @msg;
END; //
我不太確定RETURNS VARCHAR(20)
。 那可能僅僅是RETURNS VARCHAR
。
嘗試改變
IF num==0 THEN
至
IF num=0 THEN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.