thinkphp5.0中query里面执行多个sql,仅测试生产环境请勿使用。
// 测试一下
// 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;
版权声明:若无特殊注明,本文皆为《菜鸟站长》原创,转载请保留文章出处。
本文链接:thinkphp5.0中query里面执行多个sql,仅测试生产环境请勿使用。 - https://wlphp.com/?post=497