ThinkPHP 2053错误

这个报错是调用存储过程的时候产生的,用的是5.1的代码是根据官方文档写的,我怀疑5.0也有这个问题。去官方查了一下发现不少人有这个问题,但是官方都没有回应过,只能自己动手一步步调了。

$center = input(‘c‘,1);$outParam = null;$data = Db::query(‘call get_day(:in_param2)‘,[    ‘in_param2‘ => [&$center, \PDO::PARAM_INT],

]);

  注意这里的变量要用引用的方式

TP5.1 报错 SQLSTATE[HY000]: General error: 2053

  

原因:

在 \thinkphp\library\think\db\Connection.php 里面有这么一个获取存储过程结果的函数

/**
     * 获得存储过程数据集
     * @access protected
     * @return array
     */
    protected function procedure()
    {
        $item = [];

        do {
            $result = $this->getResult();
            if ($result) {
                $item[] = $result;
            }
        } while ($this->PDOStatement->nextRowset());

        $this->numRows = count($item);

        return $item;
    }

  我打印出来

$this->getResult();

返回的结果集就是一个,但是这里又判断循环是否下一行,我怀疑就是这里出错了。把这里获取结果集直接返回就可以了

/**
     * 获得存储过程数据集
     * @access protected
     * @return array
     */
    protected function procedure()
    {
        $result = $this->getResult();

        $this->numRows = count($result);

        return $result;
    }

  

原文地址:https://www.cnblogs.com/pangxiaox/p/9562613.html

时间: 2024-07-29 05:10:03

ThinkPHP 2053错误的相关文章

thinkphp 支付宝错误 Class 'Think' not found

Class 'Think' not found D:\www\DonatePlatform\ThinkPHP\Extend\Vendor\alipay\lib\alipay_submit.class.php 第 29 行. 经过仔细排查发现alipay_submit.class.php中 这个方法 function AlipaySubmit($alipay_config) {   $this->__construct($alipay_config);  }方法名称与类名称相同,其实下面的办法是为

Nginx 下无法读取session 导致 thinkphp验证码错误

打开php配置文件 php.ini 使用搜索命令 whereis php.ini 一般在:/etc/php.ini 目录下 使用vim命令打开 找到: session.save_path 找到php保持session文件的目录. 如果目录不存在则创建 使用chmod授予777权限.

2017年03月14日 新模块投产日记

婚后第一个white day,却被工作羁绊住了脚步. 历时一年的模板改版终于要上线了!!! 2周前PM欢天喜地的宣布了他的工作成果,虽然此模块改版的后端是由我个人独立完成的,但是经历了去年十一的二次大改版,去年双十一双十二的两次跳票.早已把业务逻辑完全抛在了脑后. 而甲方在模块改版过程中也经历了两次领导层大换血,新来的领导完全推翻老人的设计,而这个项目居然是我们公司的AC"送"给甲方的,导致甲方在改版时肆无忌惮,业务逻辑变了又变,也许到现在,除了乙方当事人一些隐约的记忆和甲方不肯认领的

【转载】tp自定义提示信息页面

原文链接 [TP笔记]ThinkPHP自定义错误页面.成功页面及异常页面 2014/06/20 | ThinkPHP | 13 条评论 | (5评) | 看了前面分享的一篇<什么是真正的程序员?>,觉得自己离这个目标还差的很远,所以要抓紧朝着这个方向前进.作为一名PHP小码农,掌握一种框架是必须的.所以今天开始我们就从国产PHP框架 ThinkPHP 开始学起~ 为什么会选择 ThinkPHP 呢?首先,作为一款国产PHP框架,文档肯定比国外那些框架要丰富的多,而且容易看懂:其次,ThinkP

关于Thinkphp框架模型应用过程中出现的错误Undefined class constant MYSQL_ATTR_INIT_COMMAND

今天在用thinkphp框架做网站的时候,在调用model模型是意外发生Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]错误, 下面是我百度的结果,大部分说解决问题可以分为以下两类: 1. windows下iis7.5+php5.4.11(FastCGI) 缺少pdo,编辑php.ini 取消注释: extension=php_pdo_mysql.dll 重启iis PHP数据对象(PDO)扩

thinkphp nginx php-fpm url rewrite 导致 404 错误

thinkphp nginx php-fpm url rewrite 导致 404 错误 之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在centos上以 nginx+php-fpm模式重新部署了thinkphp系统,结果发现诸如 1 /index.php/home/user/verify 此类的url nginx会报404错误,但是改成 1 /index.php?s=/home/user/verify 之后却能够访问,这说明前一种url

解决ThinkPHP的Create方法失效而没有提示错误信息的问题

ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显) 但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示错误信息 这个时候你就要好好仔细下你的代码了,因为很有可能你写的代码不规范或是其他原因 以下是我因为自己的粗心而出现的问题:Create方法失效而没有提示错误信息 /** * 编辑数据 * @Author NETFOX-HTL * @Email [email protected] * @DateTi

thinkPHP错误提示命名空间问题

错误提示为: Namespace declaration statement has to be the very first statement in the script 建议thinkphp把去bom的集成进去,自动去BOM,但是性能上很慢,不知道怎么回事啊建议用个单文件PHP执行一下去BOM就好了复制下面,保存成PHP文件,放到你网站根目录访问下这个文件就可以清除BOM<?php if (isset($_GET['dir'])){ //设置文件目录 $basedir=$_GET['dir

Thinkphp debug为true时页面能正常打开,关闭debug后,页面错误。

设置了thinkphp的路由功能,在全局配置文件common/conf/config.php下设置了 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES'=>array( 'news/:year/:month/:day' => array('Admin/Account/news', 'status=1'), 'news/:id' => 'Admin/Account/index', 'blog/:year\d|md5/[:month\d]'=>'