2012-03-23 4 views
3

Я немного смущен этим: могу ли я использовать переменные PHP в pg-запросе?PHP-переменные и запрос

$conn = pg_pconnect("..."); 
$a = 1 
$b = array ("....") 
$c = array ("....") 
$d = array ("....") 
$i = $a 
$ct = "CREATE TABLE $a 
(
$b[$i] bigint, 
$c[$i] bigint, 
$d[$i] bigint 
)"; 

pg_query($conn, $ct); 

$result = pg_query($conn, $ct); 
if ($result) {$a = $a++} 

Будет ли это иметь возможность создавать 10 таблиц, если я зациклирую это 10 раз? Благодаря!

+0

В какой библиотеке вы используете ('pg_query' и т. Д.)? –

+0

@EvanMulawski Я использую Postgres. Извините, что забыл упомянуть об этом в начале. –

ответ

1

Если вы хотите подготовить ваши строки к быть подходящие идентификаторы для PostgreSQL и защиты от инъекции SQL в то же время, бросить в pg_escape_identifier() (смешанный случай зарезервированные слова?):

$ct = 'CREATE TABLE ' . pg_escape_identifier($a) . '(
' . pg_escape_identifier($b[$i]) . ' bigint, 
' . pg_escape_identifier($c[$i]) . ' bigint, 
' . pg_escape_identifier($d[$i]) . ' bigint 
)'; 

Если, конечно, ваши идентификаторы уже подготовлены.

+0

Да, это то, что я ищу. Огромное спасибо!!! –

1

Конечно, вы можете, но вы должны их избежать:

$ct = "CREATE TABLE $a 
(
{$b[$i]} bigint, 
{$c[$i]} bigint, 
{$d[$i]} bigint 
)"; 
0

Он будет работать за $ а, но не для массивов. Вы должны сделать что-то вроде: «я могу использовать PHP переменные в запросе»

$ct = "CREATE TABLE $a 
(". 
$b[$i]." bigint,". 
$c[$i]." bigint,". 
$d[$i]." bigint 
)"; 
0

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

0

Могу ли я использовать переменные PHP в запросе?

Видимо, вы не можете.
SQL-запрос, выполняемый SQL-сервером, который абсолютно ничего не знает о PHP.

Однако вы можете добавить любые числовые переменные в строку PHP. Который может быть отправлен на сервер SQL. Но, конечно, в нем не будет никаких переменных, а просто обычного текста.

правила синтаксиса PHP строк объяснил here

Для целей отладки вы можете использовать большое преимущество в PHP строк - способность их печати.
echo Ваша строка и посмотрите, что у вас есть, и если это похоже на правильный SQL-запрос. Если нет - исправьте код.

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