Chinaunix首页 | 论坛 | 博客
  • 博客访问: 177955
  • 博文数量: 36
  • 博客积分: 2078
  • 博客等级: 大尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-09 17:13
文章分类

全部博文(36)

文章存档

2012年(1)

2011年(5)

2010年(9)

2009年(21)

我的朋友

分类: Mysql/postgreSQL

2009-04-23 12:05:08

php直接使用mysql函数调用存储过程,有点郁闷。

创建存储过程:

 mysql>DELIMITER $$
 mysql>CREATE PROCEDURE `tasknum`( status int(1) )
 mysql>begin

 mysql>SELECT count(r.rid) as rksum,u.username FROM `nb_replytask`

 mysql>left join `nb_users` u on ( r.uid = u.uid )  

 mysql>where r.status=status group by u.uid order by rksum desc
 mysql>end
 mysql>$$
 mysql>DELIMITER ;

使用mysql客户端调用存储过程倒是很方便:下面这段代码就直接返回结果了。

 mysql> set @status=2;
 mysql>call tasknum( @status );

php直接用mysql函数调用的时候就郁闷了,

我连接mysqlserver的时候是mysql_connect( 'localhost', 'root', 'root' )这样连接的,总是返回不了结果,

   在网上找了半天都是这种方法,痛恨那些copy人家成果的家伙,错误的也不修改一下就直接发布上去了

最后在一国外的论坛上找到方法,就是在连接mysqlserver的时候指定后面new_link和client_flags两个参数:

mysql_connect( 'localhost', 'root', 'root', 0, 131072 );这样就可以了。

完整的php代码:

<?php
  $dbLink = mysql_connect( 'localhost', 'root', 'root', 0, 131072 );
    //选择数据库以及设置连接编码

    mysql_select_db ( 'unionbbs', $dbLink );
    mysql_query ( "set names gbk" );
    //设置mysql变量以及调用存储过程

    mysql_query ( "set @status=2;" );
    $resResult = mysql_query ( "call tasknum( @status );" );
    //获取结果集数组

    while ( $rowsArray = mysql_fetch_array ( $resResult, MYSQL_ASSOC ) ) {
        $procedureDataArray[ ] = $rowsArray;
    }
    //打印调试

    echo '

';
    var_dump ( $procedureDataArray );
    //关闭mysqlserver连接

    mysql_close ( $dbLink );
?>

用PDO很方便,直接调用就可以了代码如下:

<?php
try {
   $dbLinkObject = new PDO( 'mysql:dbname=unionbbs;host=localhost', 'root', 'root');
}catch (PDOException $e){
   echo 'Connection failed: ' . $e->getMessage();
}

$dbLinkObject -> query( "SET NAMES GBK" );
$dbLinkObject -> exec( "set @status=2;" );
$resResult = $dbLinkObject -> query( "call tasknum( @status );" );
$procedureDataArray = $resResult->fetchAll(PDO::FETCH_ASSOC);

echo '

';
var_dump ( $procedureDataArray );
?>

这破问题郁闷了我好一阵子,记录上来以后备用。

阅读(1618) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~