1

了解しました。たとえば、次のようにします。

$array['key'] = 'value';

$SQL = "SELECT column FROM table WHERE column='{$array[key]}'";

それが私がやってきた方法ですが、もちろん、E_ALLエラー報告を有効にすると、宣言されていない定数の使用に関する通知が届き、定数ではなく「キー」と見なされます。

そのため、これは適切またはより効率的な方法ではないと思います。そのため、そのSQLクエリ(またはその他の関連する文字列)を実行する最も効率的な方法は何でしょうか。

4

3 に答える 3

6

実際、PHP文字列の引用符の規則を検索する場合、キー内のキーの前後の引用符を省略する{}と、定数として解釈されます。ただし、と引用符を省略する{}と、通知を発行せずに単純な配列インデックスが適切に解釈されます。

PHPの二重引用符で囲まれた文字列解析ルール(関連する例は変数解析セクションにあります)

私は読みやすさのために周囲を好む傾向があります{}

// Inside {}, you must quote the array key or it will be interpreted as a constant
$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";

ただし、これも有効であり、通知を発行しないでください。

// Without {}, don't quote the array key and it will be correctly parsed.
$SQL = "SELECT column FROM table WHERE column='$array[key]'";

変数をSQLクエリに渡す最良の方法は、変数を連結するのではなく、プリペアドステートメントをサポートするAPIを使用することです。

于 2012-05-11T02:49:01.587 に答える
1

私はいつもそのようにすることを好みます:

$SQL = "SELECT column FROM table WHERE column='".$array['key']."'";

それに問題を抱えたことは一度もありません。

SQLを再利用する場合、バインディングは利点になります。

http://nz.php.net/manual/en/pdostatement.bindparam.php

HTH

于 2012-05-11T02:52:59.960 に答える
1

キーを引用する必要があります。

$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";
于 2012-05-11T02:48:14.147 に答える