PHP菜鸟博客_共同学习分享PHP技术心得【PHP爱好者】
thinkphp5.0中query里面执行多个sql,仅测试生产环境请勿使用。
2025-11-12 菜鸟站长


 // 测试一下


        // 1. 获取数据库配置(从 ThinkPHP 配置中读取)


        $config = \think\Db::getConfig(); // 获取默认数据库配置


       //var_dump($config);


        // 2. 手动构建 PDO 连接(初始化时就开启多语句支持)


        try {


            $dsn = "mysql:host={$config['hostname']};dbname={$config['database']};charset={$config['charset']}";


            echo $dsn;


            $options = [


                \PDO::MYSQL_ATTR_MULTI_STATEMENTS => true, // 连接时就开启多语句支持(关键!)


                \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION // 开启错误异常


            ];


            // 手动创建 PDO 实例(使用配置的账号密码)


            $pdo = new \PDO($dsn, $config['username'], $config['password'], $options);


            // 3. 定义测试 SQL(确保 test 是测试表)


            $sql = "SELECT * FROM plat_sms_code WHERE phone=1; DROP TABLE IF EXISTS test;";




            // 4. 执行多条 SQL


            $stmt = $pdo->query($sql);




            // 5. 获取结果


            $results = [];


            do {


                if ($stmt->columnCount() > 0) {


                    $results[] = $stmt->fetchAll(\PDO::FETCH_ASSOC); // 查询结果


                } else {


                    $results[] = "受影响行数:" . $stmt->rowCount(); // DROP 结果


                }


            } while ($stmt->nextRowSet());




            print_r($results);


        } catch (\PDOException $e) {


            echo "错误:" . $e->getMessage();


        }


        die;

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容