在PHP中如果调用MySQL中已经写好的存储过程?

HFeiLin 2006-07-10 01:55:10
俺已经在mysql的客户端中创建了一个简单存储过程,就是查表mytable的记录数,在客户端中调用也显示正确的结果了,如下:

mysql> delimiter //
mysql> create procedure aa()
-> begin
-> select count(*) from mytable;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> call aa()//
+----------+
| count(*) |
+----------+
| 23 |
+----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)


可是,就是不知道在PHP中怎么调用.请有经验的教我一下,谢谢!

...全文
204 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ujjcel 2006-07-15
  • 打赏
  • 举报
回复
mark
HFeiLin 2006-07-10
  • 打赏
  • 举报
回复
不好意思,是我搞错了,我的存储过程语句错误了,

select count(*) from mytable;
应该改为
select count(*) into outparr from mytable;

注:outparr为输出参数名
HFeiLin 2006-07-10
  • 打赏
  • 举报
回复
是我换了名字试一下,拷贝错误,都一样,

<?
$db =@MySQL_connect("localhost", "root","123456");
@MySQL_select_db("test",$db);

mysql_query("call aa(@c)");
$res = mysql_query("select @c");
$row = mysql_fetch_array($res);
print_r ($row);
?>

输出结果为:

Array
(
[0] =>
[@c] =>
)
johnpanq 2006-07-10
  • 打赏
  • 举报
回复
Array
(
[0] =>
[@a] =>
)
这里的@a不应该是@c吗?
HFeiLin 2006-07-10
  • 打赏
  • 举报
回复
<?
$db =@MySQL_connect("localhost", "root","123456");
@MySQL_select_db("test",$db);

mysql_query("call aa(@c)");
$res = mysql_query("select @c");
$row = mysql_fetch_array($res);
print_r ($row);
?>

输出结果为:

Array
(
[0] =>
[@a] =>
)

数组是空的
HFeiLin 2006-07-10
  • 打赏
  • 举报
回复
按照你的回复,我另建了存储过程,加上输出参数,可还是不行呀,

<?
$db =@MySQL_connect("localhost", "root","123456");
@MySQL_select_db("test",$db);

mysql_query("call aa(@c)");
$res = mysql_query("select @c");
$row = mysql_fetch_array($res);
echo $row['@c'];

echo "===<br>";

$sql = "select count(*) from mytable";
$result = MySQL_query($sql);
$myrow = MySQL_fetch_array($result);
if ($myrow){
echo $myrow[0];
}
?>

运行输出结果为:
===<br>33

,存储过程部分没起作用.
johnpanq 2006-07-10
  • 打赏
  • 举报
回复
修改如下:
mysql> delimiter //
mysql> create procedure aa(out cnt int)
-> begin
-> select count(*) into cnt from mytable;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)

在php中这样调用
<?php
mysql_query("call aa(@c)");
$res = mysql_query("select @c");
$row = mysql_fetch_array($res);
echo $row['@c'];
?>

HFeiLin 2006-07-10
  • 打赏
  • 举报
回复
mynamesucks(来了两年半了还是5个三角)

谢谢你,我在网上一搜出一大堆,都是这文章,可是我试过了,根本不行呀.
mynamesucks 2006-07-10
  • 打赏
  • 举报
回复
http://www.phpchina.cn/code/2006/0616/517.html

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧