php调用mysql存储过程返回结果集的处理
最近开发一个项目,用到这个,记一下: 关键就是两点
2
3 $link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());
下面就可以正常使用了,以下是例子程序。
2 define('CLIENT_MULTI_RESULTS', 131072);
3
4 $link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());
5 mysql_select_db("vs") or die("Could not select database");
6 ?>
7
8 <?php
9 $result = mysql_query("call get_news_from_class_id(2)") or die("Query failed:" .mysql_error());
10 while($row = mysql_fetch_array($result, MYSQL_ASSOC))
11 {
12 $line = '<tr><td><a target = _blank href=</span>''.$row["url"].'</span>'>'.$row["title"].'('.$row["page_time"].')'.'</a></td></tr>';
14 echo $line;
15 printf("\n");
16
17 }
18 mysql_free_result($result);
19 ?>
20
21 <?php
22 mysql_close($link);
23 ?>
另外说个事,因为最近用的是FleaPHP这个框架进行开发的.设置了DSN的options发现没有作用,debug了一下发现问题出在FLEA::parseDSN函数中,代码如下:
2 {
3 if (is_array($dsn)) {
4 $dsn['host'] = isset($dsn['host']) ? $dsn['host'] : '';
5 $dsn['port'] = isset($dsn['port']) ? $dsn['port'] : '';
6 $dsn['login'] = isset($dsn['login']) ? $dsn['login'] : '';
7 $dsn['password'] = isset($dsn['password']) ? $dsn['password'] : '';
8 $dsn['database'] = isset($dsn['database']) ? $dsn['database'] : '';
9 $dsn['options'] = isset($dsn['options']) ? serialize($dsn['options']) : '';
这里多加了个serialize,不知道是开发人员手误还是咋的.