• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ThinkPHP 3.0调用存储过程有关问题

php 搞代码 3年前 (2022-01-23) 13次浏览 已收录 0个评论

ThinkPHP 3.0调用存储过程问题

PHP code

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->        $model = D('Demo');        $str = 'aaa';        $sql = "SET @uname = '$str'; CALL new_pr(@uname);";        $data = $model -> query($sql, true);        echo $model -> getLastSql();

输出
SET @uname = ‘aaa’; CALL new_pr(@uname);
放到查询编辑器里面可以执行

求解

——解决方案——————–
可能是定界符的问题,试试下面的:

PHP code

$sql = 'delimiter //';$sql .= "SET @uname = '$str';"$sql .= "CALL new_pr(@uname)//";$sql .='delimiter ;';<br /><font color='#e78608'>------解决方案--------------------</font><br />你说的情况我遇到过!在thinkphp中调用存储我成我是这样解决的:在链接数据库时多加了个参数就解决了:<br />define('CLIENT_MULTI_RESULTS',131072);<br />$conn =  mysql_connect('127.0.0.1','root','123456','1',CLIENT_MU<i>1本文来#源gaodai$ma#com搞$代*码*网</i><pre>搞代gaodaima码

LTI_RESULTS) or die(‘连接失败’);

你可以试一下!
——解决方案——————–
对于 #13 的代码:
第一段和第三段除没有对 $str 赋值外,没有什么不同
第三段不行的原因,应该是 $str 没赋值

第一段可以而第二段不可以,则表示
ThinkPHP 3.0 依然没有绕过 php 除声明存储过程外,不能不能在一个 query 中执行一条以上 sql 指令的安全约定
你需要分别执行那两条 sql 指令


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ThinkPHP 3.0调用存储过程有关问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址