自己写了一个mysql存储过程,以为php有用于调用存储过程的内建函数,查了一下发现只能用mysql_query(call pro())这样的方式,我认为从本质上也就相当于在mysql命令行里执行语句了,由于我的存储过程含有输入输出参数,直接调用会报一个mysql_error错误:XXXXcan't return a result set in the given context

google了一下这个错误发现有人用以下的代码解决了这个问题:
原文地址:http://www.phpweblog.net/GaRY/archive/2008/01/29/2752.html#Post

关键就是两点

1 define('CLIENT_MULTI_RESULTS', 131072);

3 $link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());

下面就可以正常使用了,以下是例子程序。

 1 <?php
 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=\''.$row["url"].'\'>'.$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 ?>

其中的一个参数CLIENT_MULTI_RESULTS不明白是什么意思,google之,在mysql的官方主页上关于mysql提供的c接口的文档 (http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html)里找到了这个参数 和其他一些参数,我大概翻译了一下描述,如下:

Flag Name Flag Description
CLIENT_COMPRESS Use compression protocol.(使用压缩协议。)
CLIENT_FOUND_ROWS Return the number of found (matched) rows, not the number of changed rows.(返回找到(匹配)的行数,而不是改变了的行数。)
CLIENT_IGNORE_SIGPIPE Prevents the client library from installing a SIGPIPE signal handler. This can be used to avoid conflicts with a handler that the application has already installed.(阻止客户端库安装一个SIGPIPE信号处理器。这个可以用于当应用程序已经安装该处理器的时候避免与其发生冲突。)
CLIENT_IGNORE_SPACE Allow spaces after function names. Makes all functions names reserved words.(允许在函数名后使用空格。所有函数名可以预留字。)
CLIENT_INTERACTIVE Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable is set to the value of the session interactive_timeout variable.(允许使用关闭连接之前的不活动交互超时的描述,而不是等待超时秒数。客户端的会话等待超时变量变为交互超时变量。)
CLIENT_LOCAL_FILES Enable LOAD DATA LOCAL handling.
CLIENT_MULTI_RESULTS Tell the server that the client can handle multiple result sets from multiple-statement executions or stored procedures. This flag is automatically enabled if CLIENT_MULTI_STATEMENTS is enabled. See the note following this table for more information about this flag.(通知服务器客户端可以处理由多语句或者存储过程执行生成的多结果集。当打开CLIENT_MULTI_STATEMENTS时,这个标志自动的被打开。可以在本表后查看更多关于该标志位的信息。)
CLIENT_MULTI_STATEMENTS Tell the server that the client may send multiple statements in a single string (separated by “;”). If this flag is not set, multiple-statement execution is disabled. See the note following this table for more information about this flag.(通知服务器客户端可以发送多条语句(由分号分隔)。如果该标志为没有被设置,多条语句执行。)
CLIENT_NO_SCHEMA Don't allow the db_name.tbl_name.col_name syntax. This is for ODBC. It causes the parser to generate an error if you use that syntax, which is useful for trapping bugs in some ODBC programs.(不允许“数据库名.表名.列名”这样的语法。这是对于ODBC的设置。当使用这样的语法时解析器会产生一个错误,这对于一些ODBC的程序限制bug来说是有用的。)
CLIENT_ODBC Unused.(不使用)
CLIENT_SSL Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the client library. Instead, use mysql_ssl_set() before calling mysql_real_connect().(使用SSL。这个设置不应该被应用程序设置,他应该是在客户端库内部是设置的。可以在调用mysql_real_connect()之前调用mysql_ssl_set()来代替设置。)
CLIENT_REMEMBER_OPTIONS Remember options specified by calls to mysql_options(). Without this option, if mysql_real_connect() fails, you must repeat the mysql_options() calls before trying to connect again. With this option, the mysql_options() calls need not be repeated.(记住通过调用mysql_options()生成的设置。如果不使用这个设置,当mysql_real_connect失败时,再重新连接之前必须反复调用mysql_options()。当然,如果使用这个设置,就不必反复调用了。)

下面有对于CLIENT_MULTI_STATEMENTS的说明:
If you enable CLIENT_MULTI_STATEMENTS or CLIENT_MULTI_RESULTS, you should process the result for every call to mysql_query() or mysql_real_query() by using a loop that calls mysql_next_result() to determine whether there are more results. For an example, see Section 20.9.12, “C API Support for Multiple Statement Execution”.
如果打开了 CLIENT_MULTI_STATEMENTS或 CLIENT_MULTI_RESULTS,你必须对每一个mysql_query()或者mysql_real_query()的调用结果通过一个循环来处理,在这个循环中,调用mysql_next_result()来决定(发现)是否有更多的结果,如Section 20.9.12, “C API Support for Multiple Statement Execution”

以上供需要的朋友参考吧。

转载于:https://www.cnblogs.com/jking10/p/4652318.html

关于mysql_connect CLIENT_MULTI_RESULTS相关推荐

  1. php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. The mysql extension is deprecated and will be removed i ...

  2. zabbix 安装时的报错mysql_connect(): Access denied for us

    zabbix在安装完成时的报错 出现提示:mysql_connect(): Access denied for user 'zabbix'@'localhost' (using password: Y ...

  3. php5.4 mysql connect,php5.4 Call to undefined function mysql_connect()

    今天学习PHP中连接MySQL,使用mysql_connect()函数时,碰到以下错误: "Call to undefined function mysql_connect()", ...

  4. mysql_connect() 不支持 请检查 mysql 模块是否正确加载

    在上面文章的基础上配置PHP环境完成之后发现安装(discuz)论坛时候还是有问题! 函数名称                                检查结果          建议 mysq ...

  5. Call to undefined function mysql_connect()

    PHP5 报错Fatal error: Call to undefined function mysql_connect() 解决方法一 在PHP代码中使用phpinfo()函数查看PHP基本信息 从 ...

  6. php高版本不再使用mysql_connect()来连接数据库

    想用php生成一个mysql数据字典导出来,用到下面代码会 $mysql_conn = mysql_connect ( "$dbserver", "$dbusername ...

  7. Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)

    Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac) 参考文章: (1)Warning: mysql_connec ...

  8. 解决PHP Fatal error mysql_connect() mysql_query()的问题

    解决PHP Fatal error mysql_connect() mysql_query()的问题 参考文章: (1)解决PHP Fatal error mysql_connect() mysql_ ...

  9. 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)

    解决远程连接mysql很慢的方法(mysql_connect 打开连接慢) 参考文章: (1)解决远程连接mysql很慢的方法(mysql_connect 打开连接慢) (2)https://www. ...

最新文章

  1. Devexpress 之gridControl
  2. linux修改响应时间,linux下使用httping测试web响应时间
  3. python items函数用法,Python中dictionary items()系列函数的用法实例
  4. Go语言的context包从放弃到入门
  5. 无痕模式后如何找到历史_离异后女人如何快速找到对象?成都百和情缘婚介告诉你...
  6. Unity3D - UGUI组件的中英文对照
  7. linux中文输入法配置
  8. 2020-03-13 MySQL 8 绿色安装
  9. Win7系统电脑怎么设置桌面壁纸全屏显示
  10. SSD网络接口介绍(包含完整代码)
  11. 科技感十足五款APP软件,让你的手机不再低调!
  12. 位列腾讯网易后面,三七互娱要页游“赚”云游戏?
  13. 使用多线程将多个变量导出到目标文件夹
  14. 开篇词 | 算法是程序的“灵魂”
  15. matlab幂函数e,MATLAB e的幂函数拟合
  16. 阿翔编程学-系统安全
  17. 基于视觉的Web页面分页算法VIPS的实现源代码下载
  18. 计算机信息及安全行业必知名词术语
  19. Idea2020创建一个Servlet
  20. CAD软件中坐标Z轴归零问题的两种解决办法

热门文章

  1. 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?
  2. 从入门到熟悉 HTTPS 的 9 个问题
  3. Go: init()执行顺序问题
  4. 网络:TIME-WAIT
  5. 【Python】青少年蓝桥杯_每日一题_6.27_输出符合要求的10个自然数
  6. margin 0 auto 什么意思
  7. 机器人瓦力漫威_86、机器人瓦力
  8. 从本地的win传文件到本地的linux上,pscp.exe实现本地windows下的文件下载(传输)到linux上...
  9. 浓烟滚滚!某市联通集体断网,谁的锅?
  10. 机房安防系统常见故障原因及处理方法