phpmysql調用存儲過程
php相當於執行mysql的終端,即模擬mysql的客戶端,所以符號sql標準的語句都是可以執行的。
存儲是由資料庫本身建立起來的,與php沒有關系,
具體查看mysql的命令
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
⑵ php調用返回多結果的mysql存儲過程
直接處理存儲過程的輸出參數即可。
調用存儲過程的方法。
a。如果存儲過程有 IN/INOUT參數,聲明一個變數,輸入參數給存儲過程,該變數是一對,
一個php變數(也可以不必,只是沒有php變數時,沒有辦法進行動態輸入),一個Mysql
變數。
b。如果存儲過程有OUT變數,聲明一個Mysql變數。
mysql變數的聲明比較特殊,必須讓mysql伺服器知道此變數的存在,其實也就是執行一條mysql語句。
入set @mysqlvar=$phpvar ;
c。使用mysql_query()/mysql_db_query()執行mysql 變數聲明語句。
mysql_query("set @mysqlvar【=$pbpvar】");
這樣,在mysql伺服器裡面就有一個變數,@mysqlar。如果時IN參數,那麼其值可以有phpar傳入。
d。 如果時存儲過程。
1。執行 call procere()語句。
也就是mysql_query("call proceer([var1]...)");
2. 如果有返回值,執行select @ar,返回執行結果。
mysql_query("select @var)"
接下來的操作就和php執行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數獲得結果。
如果時函數。 直接執行 select function() 就可以了。
傳出參數的存儲過程:
$sql = "
create procere myproce3(out score int)
begin
set 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>';print_r($array);
⑶ mysql 存儲過程怎麼調用
php調用mysql存儲過程和函數的方法
存儲過程和函數是MySql5.0剛剛引入的。關於這方面的操作在PHP裡面沒有直接的支持。但是由於Mysql PHP API的設計,使得我們可以在以前的PHP版本中的mysql php api中支持存儲過程和函數的調用。
在php中調用存儲過程和函數。
1。調用存儲過程的方法。
a。如果存儲過程有 IN/INOUT參數,聲明一個變數,輸入參數給存儲過程,該變數是一對,
一個php變數(也可以不必,只是沒有php變數時,沒有辦法進行動態輸入),一個Mysql
變數。
b。如果存儲過程有OUT變數,聲明一個Mysql變數。
mysql變數的聲明比較特殊,必須讓mysql伺服器知道此變數的存在,其實也就是執行一條mysql語句。
入set @mysqlvar=$phpvar ;
c。使用mysql_query()/mysql_db_query()執行mysql 變數聲明語句。
mysql_query("set @mysqlvar=$pbpvar");
這樣,在mysql伺服器裡面就有一個變數,@mysqlar。如果是IN參數,那麼其值可以由phpar傳入。
d。 如果是存儲過程。
1。執行 call procere()語句。
也就是mysql_query("call proceer([var1]...)");
2. 如果有返回值,執行select @ar,返回執行結果。
mysql_query("select @var)"
接下來的操作就和php執行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數獲得結果。
如果時函數。 直接執行 select function() 就可以了。
$host="localhost";
$user="root";
$password="11212";
$db="samp_db";
$dblink=mysql_connect($host,$user,$password)
or die("can't connect to mysql");
mysql_select_db($db,$dblink)
or die("can't select samp_db");
$res=mysql_query("set @a=$password",$dblink);
$res=mysql_query("call aa(@a)",$dblink);
$res=mysql_query("select @a",$dblink);
$row=mysql_fetch_row($res);
echo $row[0];
⑷ 在PHP中怎麼調用mysql存儲過程用到哪些函數
<?php
//建立資料庫連接
$link = mysqli_connect('localhost','root','root','mydb');
$sql = "call getEmail('00056')";
//設置字元集
mysqli_query($link,"set names gbk");
$result = mysqli_query($link,$sql);
$row = mysqli_fetch_array($result);
echo "郵件地址:".$row['email'];
?>
這里有兩篇教程說得非常詳細:
《MySQL 5 存儲過程》:http://www.sunchis.com/html/php/mysql/2010/0305/42.html
《PHP調用存儲過程》:http://www.sunchis.com/html/php/mysql/2010/0305/43.html
⑸ php調用mysql存儲過程,如何實現。 我的代碼如下:
mysql存儲過程返回2個資源,第一個是執行信息,第二個是存儲過程返回結果。
mysql_*系列函數無法獲取超過1個資源,需使用mysqli或PDO代替。
PDO:
$stmt=$db->prepare("CALLpro_rb_save(?,?,@return_msg);");
$stmt->bindParam(1,$a);
$stmt->bindParam(2,$b);
$stmt->execute();
$outputArray=$db->query("select@return_msg")->fetch(PDO::FETCH_ASSOC);
var_export($return_msg);
⑹ 怎麼寫mysql存儲過程,並用php調用它
實現原理
首先,需要知道怎麼寫mysql存儲過程,了解mysq存儲過程語言,
其次,使用mysql工具創建存儲過程。
最後,通過mysql_query()函數執行mysql變數的設置和mysql存儲過程及返回值。
具體代碼如下:
mysql存儲過程代碼
createprocerepro_name(user_idint)
begin
.........
end
2. PHP代碼
$host="localhost";
$user="root";
$password="232412";
$db="user_db";
$dblink=mysql_connect($host,$user,$password)ordie("can'tconnecttomysql");
mysql_select_db($db,$dblink)ordie("can'tselectuser_db");
$user_id=1;
$res=mysql_query("set@a=$user_id",$dblink);
$res=mysql_query("callpro_name(@a)",$dblink);
⑺ php 怎麼調用,mysql 存儲過程 exec,煩死了
1。執行callprocere()語句。
也就是mysql_query("callproceer([var1]...)");
2.如果有返回值,執行select@ar,返回執行結果。
mysql_query("select@var)"
接下來的操作就和php執行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數獲得結果。
如果時函數。直接執行selectfunction()就可以了。
$host="localhost";
$user="root";
$password="11212";
$db="samp_db";
$dblink=mysql_connect($host,$user,$password)
ordie("can'tconnecttomysql");
mysql_select_db($db,$dblink)
ordie("can'tselectsamp_db");
$res=mysql_query("set@a=$password",$dblink);
$res=mysql_query("callaa(@a)",$dblink);
$res=mysql_query("select@a",$dblink);
$row=mysql_fetch_row($res);
echo$row[0];
⑻ php 調用mysql存儲過程
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
configure:3427: gcc --version >&5
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for ing conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
⑼ php調用mysql存儲過程(急,在線等)
關鍵就是兩點
1)define('CLIENT_MULTI_RESULTS', 131072);
2)$link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());
下面就可以正常使用了,以下是例子程序。
<?php
define('CLIENT_MULTI_RESULTS', 131072);
$link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());
mysql_select_db("vs") or die("Could not select database");
?>
<?php
$result = mysql_query("call get_news_from_class_id(2)") or die("Query failed:" .mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$line = '<tr><td><a target = _blank href=\''.$row["url"].'\'>'.$row["title"].'('.$row["page_time"].')'.'</a></td></t
r>';
echo $line;
printf("\n");
}
mysql_free_result($result);
?>
<?php
mysql_close($link);
?>
⑽ thinkphp調用mysql存儲過程 ,求助,具體點好嗎,格式猜不出來…
thinkPHP的調用
$model = M("");
$data = $model -> query("CALL abcas(1,'[email protected]')");//調用存儲過程
mp($data);//輸出存儲過程的返回值
存儲過程部分
BEGIN -- 存儲過程開始
START TRANSACTION; -- 開始事務
#Routine body goes here...
SET @x = 1; -- 定義變數,通過這個變數判斷知道到的地方,事務成功@x返回大於0,否則返回0
update lzh_members set user_email = em where id = tid;
if row_count() > 0 then -- 判斷語句是否執行成功
update lzh_members set user_type = 0 where id = tid;
if row_count() > 0 then
update lzh_members set user_type = 2 where id = tid;
if row_count() > 0 then
SET @x = 5;
select @x;
commit; -- 事務提交
ELSE
SET @x = 0;
select @x;
rollback; -- 事務回滾
end if;
ELSE
SET @x = 0;
select @x;
rollback; -- 事務回滾
end if;
ELSE
SET @x = 0;
select @x;
rollback; -- 事務回滾
end IF;
END --存儲過程結束