如何将MySQL查询结果转为指定格式数组?多语言翻译器开发求助
解决MySQL查询结果转指定格式数组的问题
嘿,我来帮你搞定这个翻译器的数组转换问题!你的现有代码有几个关键问题,我一步步给你修正并解释清楚:
首先,先说说你代码里的明显错误
- 变量未加$符号:你写的
t_name是无效的PHP变量,必须加上$前缀; - 数组赋值逻辑完全错误:你只是把字段名字符串塞进数组,根本没用到数据库查询出来的实际值;
- *废弃的mysql_函数:
mysql_query这类函数在PHP 5.5之后就被废弃了,现在主流用mysqli或PDO,旧函数不仅不安全,还会在新版本PHP里报错。
修正后的完整代码
我用mysqli(最常用的替代方案)给你写了符合需求的代码,结构完全匹配你要的$_name = array($_en, $_ru, $_ua)格式:
// 1. 先建立数据库连接(替换成你的数据库账号密码) $dbConn = mysqli_connect('localhost', '你的用户名', '你的密码', '你的数据库名'); if (!$dbConn) { die('数据库连接失败:' . mysqli_connect_error()); } // 2. 执行查询(调整字段顺序,让结果更贴合你要的数组顺序) $queryResult = mysqli_query($dbConn, "SELECT t_name, t_en, t_ru, t_ua FROM transl_db"); // 3. 初始化存储所有翻译的数组 $transArr = []; // 4. 循环处理每一行查询结果 while ($row = mysqli_fetch_assoc($queryResult)) { // 核心逻辑:用t_name作为数组键,对应值是[英文, 俄文, 乌克兰文]的数组 $transArr[$row['t_name']] = [ $row['t_en'], // 索引0:英文 $row['t_ru'], // 索引1:俄文 $row['t_ua'] // 索引2:乌克兰文(你之前写的[3]应该是笔误,数组索引从0开始) ]; } // 示例用法:获取某个名称的对应语言翻译 // echo $transArr['login_btn'][0]; // 输出login_btn的英文翻译 // echo $transArr['login_btn'][1]; // 输出login_btn的俄文翻译 // echo $transArr['login_btn'][2]; // 输出login_btn的乌克兰文翻译 // 5. 记得关闭数据库连接 mysqli_close($dbConn);
代码说明
- 用
mysqli_fetch_assoc获取关联数组,能直接通过字段名取到对应的值,可读性更强; - 最终生成的
$transArr完全符合你的需求:每个t_name对应一个包含三种语言的子数组,通过索引[0]/[1]/[2]就能快速获取对应语言的翻译; - 替换成
mysqli函数后,代码能兼容PHP 7+的所有版本,安全性也更高。
内容的提问来源于stack exchange,提问作者Janan Pouransari
相关产品推荐
相关产品推荐

