ThinkPHP相关问题使用记录

本文介绍ThinkPHP中处理HTML标签的方法、前后端交互技巧、页面跳转带参数、PHPExcel使用教程、解决表单误提交问题、淘宝API接入、SimpleXML转换数组等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)ThinkPHP解析带Html标签的数据

{$o.remark}//这个会出现<p>
{$o.remark|stripslashes|htmlspecialchars_decode}//这个可以有

2)后台获取前端U方法传来的参数

前端:{:U("aa",array('id'=>1))}

后台:public function aa(){echo $_GET['id'];}

3)跳转页面并带上参数

U('index',array('p' =>$p))//...&p=2

4)phpexcel下载

    public function download() {
        header('Content-Type: text/html; charset=utf-8');
        set_time_limit(0); //不设操作时限
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);

        define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');


        //引入PHPExcel库文件
        //Vendor('PHPExcel.Classes.PHPExcel');
        require_once $_SERVER['DOCUMENT_ROOT'].'/Application/Common/Conf/Classes/PHPExcel.php';
        require_once $_SERVER['DOCUMENT_ROOT'].'/Application/Common/Conf/Classes/PHPExcel/IOFactory.php';
        //创建对象
        //$excel = new PHPExcel();
        $excel = new \PHPExcel();
        //Excel表格式,这里简略写了8列
        $letter = array('A','B','C','D','E','F','F','G');
        //表头数组
        $tableheader = array('序号','客栈名称','客栈地址','座机','手机','QQ','邮箱');
        //填充表头信息
        for($i = 0;$i < count($tableheader);$i++) {
            $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
        }
        //表格数组
        $data = array(
            array('1','B','C','D','E','F','G'),
            array('2','B','C','D','E','F','G'),
            array('3','B','C','D','E','F','G'),
            array('4','B','C','D','E','F','G'),
            array('5','B','C','D','E','F','G'),
            array('6','B','C','D','E','F','G'),
            array('7','B','C','D','E','F','G'),
        );
        //填充表格信息
        for ($i = 2;$i <= count($data) + 1;$i++) {
            $j = 0;
            foreach ($data[$i - 2] as $key=>$value) {
                $excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
                $j++;
            }
        }
        //创建Excel输入对象
        $write = new \PHPExcel_Writer_Excel5($excel);
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");;
        header('Content-Disposition:attachment;filename="客栈信息.xls"');
        header("Content-Transfer-Encoding:binary");
        $write->save('php://output');
    }

5)点击非提交按钮,结果提交了表单

例如点击【返回】,结果提交了表单

<button class="layui-btn layui-btn-primary" onclick="history.go(-1)">返回</button>
改为
<button class="layui-btn layui-btn-primary" type="button" onclick="history.go(-1)">返回</button>
 
即强调一下type="button" 即可

6)淘宝API接入

        //todo 把三方类库文件放入 vendor 文件夹中
        //导入加载第三方类库 tbd 代表目录 TopSdk (\ThinkPHP\Library\Vendor)代表文件 . 代表 /
       vendor("tbk.TopSdk");

        //请求淘宝客API,实例化类 **注意使用\命名空间**
        $c = new \TopClient;

        $c->appkey = '你的 appkey';
        $c->secretKey = '你的 secretKey';

        $req = new \TbkItemInfoGetRequest;
        //选择需要查询的字段信息
        $req->setFields("num_iid,title,pict_url,small_images,reserve_price,zk_final_price,user_type,provcity,item_url"); 
        $req->setPlatform("2");
        $req->setNumIids(I('goodsid'));
        $resp = $c->execute($req);

        echo "<pre>";
        var_dump($resp);
        exit();
/*————————————————
版权声明:本文为优快云博主「怀色」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_36429334/article/details/72866572*/

6)simplexml转数组

// XML转换成数组
    private function simplexml_obj2array($obj)
    {
        if( count($obj) >= 1 )
        {
            $result = $keys = array();

            foreach( $obj as $key=>$value)
            {   
                isset($keys[$key]) ? ($keys[$key] += 1) : ($keys[$key] = 1);

                if( $keys[$key] == 1 )
                {
                    $result[$key] = $this->simplexml_obj2array($value);
                }
                elseif( $keys[$key] == 2 )
                {
                    $result[$key] = array($result[$key], $this->simplexml_obj2array($value));
                }
                else if( $keys[$key] > 2 )
                {
                    $result[$key][] = $this->simplexml_obj2array($value);
                }
            }
            return $result;
        }
        else if( count($obj) == 0 )
        {
            return (string)$obj;
        }
    }

【tptblog mysqli_connect()函数依赖检查失败】

打开Application/Install/Common/function.php

第72行:mysql_connect 改为mysqli_connect

【bash: composer: command not found】

bash: composer: command not found
下载composer到本地:curl -sS https://getcomposer.org/installer | php

移动至系统服务:sudo mv composer.phar /usr/bin/composer

找到/usr/bin/composer 并改权限为777

查看版本:composer --version

【sql报错,页面上错误信息显示不全,去哪里看到报错的sql全貌】

/Runtime/Logs/Admin

【各种查sql】

//方法一
$Model = new \Think\Model();
$Model = M(myTable);
$sql = "select id from tpt_my_table where 1=1";

$list = $Model->query($sql);
$de_json = json_decode(json_encode($list), TRUE);
$id = $de_json[0]['id'];
$this->assign("id", $id);
//方法二
$table = D('myTable');
// 执行查询
$list = $table
            ->field('product_id,mainpic,main_category,sub_category,guide_title,product_name,SUM(cast(payment_amount AS DECIMAL)) AS payment_amount_all, SUM(payment_buyers) AS payment_buyers_all')
            ->group('product_id,mainpic,main_category,sub_category,guide_title,product_name')
            ->where('1 and statistics_date>="' . $date_count_start . '" and statistics_date<= "' . $date_count_to . '"')
            ->order('payment_amount_all DESC')
            ->select();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值