Как вставить константу PHP в SQL-запрос?

У меня есть PHP-файл с настройками конфигурации моей базы данных, определенными как константы, например:

<?php define(DB_HOST,"localhost"); define(DB_USERNAME,"root"); define(DB_PASSWORD,"password"); define(DB_NAME,"db_users"); define(DB_TABLE_1,"table_1"); define(DB_TABLE_2,"table_2); ?> 

Я, очевидно, включаю этот файл, когда хочу подключиться к моей базе данных. Однако, когда я перехожу к вставке констант определения таблицы в SQL-запрос (см. Ниже), он, похоже, не работает. Должен ли я должным образом избежать постоянной или конкатенировать ее каким-то образом?

 $query = "SELECT users FROM DB_TABLE_1"; 

Solutions Collecting From Web of "Как вставить константу PHP в SQL-запрос?"

Вам нужно будет использовать конкатенацию строк (любого типа).

 $query = "SELECT users FROM " . DB_TABLE_1; 

константы не будут интерполировать в строку как переменные.

Одна из хакерских альтернатив – использовать переменную функцию:

 $const = 'constant'; $query = "SELECT users FROM {$const('DB_TABLE_1')}"; 

который выполнит функцию constant() и вернет значение константы, но это, как правило, не очень хорошая идея, хотя бы ради удобочитаемости.

Просто поставьте его вне цитат, и он должен работать нормально:

 $query = "SELECT users FROM ".DB_TABLE_1; 

Я думаю, что это проще:

 $query = "SELECT users FROM '.DB_TABLE_1.'"; 

при использовании нескольких таблиц:

 $query = "SELECT TB_1.users, TB_2.names FROM '.TB_1.' INNER JOIN '.TB_2.' ON x=y"; 

Кроме того, это лучше:

 define("DB_HOST","localhost"); 

Я нашел два пути.

1.-

 define("VALUE1", "someValue"); $query = "SELECT * FROM TABLE WHERE `Column` /*=" . VALUE1 . "*/"; 

2.-

 define("VALUE1", "someValue"); define("VALUE2", "otherValue"); $query = "INSERT INTO TABLE (`Column1`, `Column2`) VALUES (" . VALUE1 . ", " . VALUE2 . ")"; 

Backticks (“) я использую, потому что я использую phpmyadmin, вам могут и не понадобятся.