如何在PDO(SELECT / WHERE)返回的关联数组中更改字段名称以获取查询?

时间:2019-06-13 00:04:03

标签: php mysql pdo

使用fetchAll(PDO :: FETCH_ASSOC)进行PDO查询时,它返回一个关联数组,我可以将json_encode像这样的字符串:

[{"Email_Address":"address@mail.com","Related_Data":"1239873652"}]

但是,我希望将相同的字符串简化如下:

[{"from":"address@mail.com","data":"1239873652"}]

它不仅减少了记录量高时传输的数据量,而且通过不公开数据库中字段的名称来提供额外的安全级别。

谢谢

这是使用的PHP代码:

$stmt = $db->query('SELECT * FROM Table WHERE Email_Address = \'address@mail.com\'');
$array = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($array);

按如下方式使用“ AS”别名时:

$stmt = $db->query('SELECT Email_Address AS from, Related_Data AS data FROM Messages WHERE Email_Address = \'address@mail.com\'');

服务器返回以下错误:

警告:PDO :: query():SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;您可能会发现错误。检查与您的MySQL服务器版本相对应的手册,以获取正确的语法,以在'from,Related_Data AS data FROM table WHERE Email_Address ='address@mail.com'

附近使用

1 个答案:

答案 0 :(得分:2)

您可以并且应该在SELECT语句中列出所有列。然后,您可以尝试使用别名:

SELECT 
    Email_Address AS mail, 
    Related_Data AS data 
FROM Table
WHERE Email_Address = ?