如何避免使用Heredoc SQL语句

时间:2014-02-20 18:28:02

标签: php mysql sql

如何避免对SQL语句使用Heredoc字符串分隔符?或许是一个更好的问题,在PHP中创建和调用SQL语句的现代方法是什么?

我对php比较新。我经常在我正在进行的项目中看到类似的东西:

        $sql = <<<SQL
SELECT
    `data`.`key`,
FROM `tableName`
ORDER BY `data`.`key`
SQL;

当研究更多关于Heredoc的信息时(我必须使用SO symbol reference帖子来查找它的名称)我觉得有更好的方法来编写SQL语句。对于exapmle SO用户会说他们使用Heredoc for SQL“back in the day”。

使用Heredoc似乎不是最好的解决方案,因为很少有格式更改mess it up。无法缩进结束标记会使代码更难以阅读和格式化。它似乎只是使用Heredoc鼓励用SQL语句和逻辑乱丢代码。

这只是'完成它的方式'还是有更好的方法?

This question about managing your SQL queries来自6年前。 5年前的PDO or an ORM are mentioned in this answer。这些仍然是最好的方式吗?

1 个答案:

答案 0 :(得分:3)

您的HEREDOC声明没有任何问题,但这是另一种通过引用字符串来创建$sql变量的方法。

$sql = "SELECT `data`.`key`, FROM `tableName` ORDER BY `data`.`key`";

对于需要额外可读性的较长语句,您可以利用忽略空格的事实:

$sql = "SELECT `data`.`key`, 
    FROM `tableName`
    ORDER BY `data`.`key`";

还考虑以面向对象的方式使用PDO进行数据库交互:http://www.php.net/PDO