В чем разница между:
$sql = "select * from {$table}";
и это:
$sql = "select * from ".$table;
Есть ли различия?
Существует не большая разница, чем одна использует конкатенацию, а другая нет.
Вы также можете записать его как
$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;