2012-03-23 14 views
3

私はこれと少し混乱しています.pgクエリでPHP変数を使用できますか?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回ループすると、これでこれを作成できますか?ありがとう!

+0

あなたはどのライブラリを使用していますか( 'pg_query'など)? –

+0

@EvanMulawski私はPostgresを使用しています。そのことを最初に忘れて申し訳ありません。 –

答えて

1

あなたはPostgreSQLのため適し識別子で(大文字と小文字の予約語?)とpg_escape_identifier()に投げ、同時にSQLインジェクションに対して保護するためにあなたの文字列を準備したい場合:

$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変数を使用できますか?

明らかにあなたはできません。
PHPは絶対に何も知らないSQLサーバによってSQLクエリが実行されています。

PHP文字列に任意の数値変数を追加できます。これはSQLサーバーに送信することができます。もちろん、そこに変数はありませんが、単なるテキストです。それらをプリントアウトする能力 - PHPの文字列の

構文規則を使用すると、PHPの文字列の大きな利点を使用することができ、デバッグの目的で

hereを説明しました。
ちょうどechoあなたの文字列が出てきて、正しいSQLクエリのように見えますか。そうでない場合は、コードを修正してください。