2014-02-20 3 views
1

Как я могу избежать использования разделителей строк Heredoc для операторов SQL? Или, может быть, лучший вопрос, каков современный способ создания и вызова операторов SQL в PHP?Как избежать инструкций оператора Heredoc

Я относительно новичок в php. Я часто видел, что-то вроде этого в проектах, я работал на:

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

При исследовании больше о Heredoc (я должен был использовать SO symbol reference пост, чтобы найти то, что она называется) У меня возникло ощущение, что есть более эффективные способы для создания операторов SQL. Для exapmle пользователей SO скажут, что они использовали Heredoc для SQL «back in the day».

Использование Heredoc кажется не лучшим решением, так как небольшие изменения форматирования могут mess it up. Невозможность отступов закрывающего тега делает код более трудным для чтения и форматирования. Также кажется, что только использование Heredoc поощряет засорять код с помощью операторов SQL и логики.

Это просто «способ, которым это делается», или есть лучший способ?

This question about managing your SQL queries от 6 лет назад. PDO or an ORM are mentioned in this answer от 5 лет назад. Это все еще лучший способ?

+0

Инструкция heredoc - это просто способ процитировать вашу строку без использования кавычек. Вы можете использовать любой способ, который вам нравится. Heredoc является обычным явлением, когда у вас несколько строк в строке. –

+1

Хорошо, что SQL не заботится о таком банальном форматировании. – user2864740

+2

Вам не нужно использовать heredoc - вместо этого вы можете использовать только цитированную строку. Единственное, что heredoc получает от вас, - это не необходимость скрывать кавычки внутри страны. Но вы не должны часто это делать, если вы используете подготовленный stat –

ответ

2

В инструкции 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

Смежные вопросы