2010-12-01 19 views
0

次は失敗します。PHPのネスト引用符

$result = mysql_query("SELECT * FROM Tasks WHERE UserID = '$_SESSION['userID']'"); 

私は次のことを試してみました:

$userID = $_SESSION['userID']; 
$result = mysql_query("SELECT * FROM Tasks WHERE UserID = '$userID'"); 

、それが動作します。別の変数を作成せずにこれを行う方法はありますか?

ありがとうございます!この

$result = mysql_query("SELECT * FROM Tasks WHERE UserID = '$_SESSION[userID]'"); 

答えて

4

このように:

$result = mysql_query("SELECT * FROM Tasks WHERE UserID = '{$_SESSION['userID']}'"); 
+0

+1特に配列要素に関しては、私の好みの方法です。 – RabidFire

+0

@RabidFire私も実際には他のメソッドを好むので、関数を連結することもできます。 – Babiker

+0

一方、HEREDOC表記を使用するときに連結することはできません。 –

-1

はい、代わりにデバッグするのが簡単になります

+0

私は間違っているかもしれませんが、私はあなたの例が正しいとは思わない;) – Michael

+0

申し訳ありませんが、これは非常に悪い方法です。 PHPはuserIDという名前の定数を見つけようとしますが、そうでなければ警告を出します。だから、時にはうまくいくかもしれませんが、ひどく失敗するかもしれません。 – Nux

+0

私はSESSION値のためにそれはちょうどファイルを動作すると言うでしょう。セッション値は、通常、制限されたアクセスを意味します。つまり、このページにいる場合は、セッション値が設定されています。今は、GETの価値があるかもしれないし、そうでないかもしれない、それはひどい考えです。複数の方法で。そのメモでは、定数は文字列でも定義できますか? –

3
$result = mysql_query("SELECT * FROM Tasks WHERE UserID = '".$_SESSION['userID']."'"); 

または

$result = mysql_query("SELECT * FROM Tasks WHERE UserID = '{$_SESSION['userID']}'"); 
それはあなたがPHPのエディタを使用するときに見つける/読みやすくなりますので、それは最初のものを推薦する注目に値する

、などの

+0

Breezerのように二重引用符から飛び出し、点を使って変数を連結してください。 – Michael

+0

ちょっとテストをして、{{} 'を使うよりも連結が約2%速いことがわかりました:D –

0

あなたが実際に命令しているので、userID'$_SESSION['です。残りの部分がuserID']}'であるとは言いませんが、MySQLでは構文エラーと解釈されます。