本地主机数据库连接失败:MariaDB SQL语法错误求助
问题排查与解决
错误原因
报错的核心是SQL语法错误,出在这行代码:
$connect->exec("SET NAMES ='UTF8'");
SET NAMES的正确语法不需要加等号,多余的等号导致MariaDB解析SQL时出错。
修复方案
方案1:修正SET NAMES语法
把错误的语句改成:
$connect->exec("SET NAMES 'utf8mb4'");
建议统一使用utf8mb4(支持emoji等全Unicode字符),替代MySQL/MariaDB中仅支持部分Unicode的UTF8(实际为utf8mb3)。同时可以移除SET character_set_connection ='utf8mb4',因为SET NAMES 'utf8mb4'已经包含了对character_set_connection、character_set_results、character_set_client三个参数的设置,重复执行没必要。
方案2:更优的字符集设置方式(推荐)
直接在PDO的DSN中指定字符集,无需额外执行SET语句,更简洁可靠:
<?php $server="localhost"; $user="root"; $pass=""; $dbname="expert"; // DSN中添加charset参数 $dsn="mysql:host=$server;dbname=$dbname;charset=utf8mb4"; try { $connect=new PDO($dsn,$user,$pass); // 可选:开启异常错误模式,方便后续调试 $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $error){ echo "无法连接数据库:".$error->getMessage(); } ?>
内容的提问来源于stack exchange,提问作者mahdi
相关产品推荐
相关产品推荐

