Разница между интерполяцией (с использованием {} squiggly brackets) и конкатенации (., Или точки) при построении оператора SQL

В чем разница между:

$sql = "select * from {$table}"; 

и это:

 $sql = "select * from ".$table; 

Есть ли различия?

Related of "Разница между интерполяцией (с использованием {} squiggly brackets) и конкатенации (., Или точки) при построении оператора SQL"

Существует не большая разница, чем одна использует конкатенацию, а другая нет.

Вы также можете записать его как

 $sql = "select * from $table"; 

Вы можете использовать {} в своей строке для обозначения объектов.

Если таблица была именем или массивом

 $sql = "select * from {$table->name}"; //works $sql = "select * from $table->name"; //works too $sql = "select * from $table->innerTable->table"; //doesn't work $sql = "select * from {$table['name']}"; //works $sql = "select * from $table['name']"; //breaks 

Я лично использую его для повышения удобочитаемости, потому что я всегда буду знать, что я имею в виду переменную.

Результат будет таким же, но, конечно, вы делаете две принципиально разные вещи:

Первый – это разбор переменных (который работает только в строках с двойными кавычками и heredoc ), второй – конкатенация строк .

Нет – оба будут оценивать внутри PHP одну строку.

Так будет

 $sql = "select * from $table"; 

вы даже можете сделать это в php: $sql = "SELECT * FROM $table "; это просто псевдоним.

Как упоминалось, оба оператора приводят к тому, что одна и та же строка присваивается $ sql. Обратите внимание, что использование одиночных кавычек и конкатенации несколько более эффективно, поскольку строка не нуждается в анализе с помощью интерпретатора PHP:

 $sql = 'select * from ' . $table;