0
$names = array();
$names['full-name'] = 'John Doe';

$query = "INSERT INTO users (full_name) VALUES ('$names[full-name]')";
$result = mysql_query($query) or die(mysql_error());

ハイフンを含む配列キーを使用して mysql クエリを作成しようとすると、常に構文エラーが発生します。

解析エラー: 構文エラー、予期しない「-」、「]」が必要です

どうすればこれを修正できますか? ありがとうございました。

4

5 に答える 5

2

まだ言及されていないので、別の代替構文を次に示します。

$query = "INSERT INTO users (full_name) VALUES ('{$names['full-name']}')";

変数/配列のインデックスを中かっこ{}で囲むと、文字列の外側にある場合と同じように引用できます。この{}表記法により、文字列内に多次元配列を埋め込むこともできます。

echo "$x[1][2]";

配列の解析は「貪欲」ではないため、通常、PHP では配列$x[1]の後にリテラルテキストが続くと見なされます。[2]しかし、配列参照全体を中括弧で囲むと、PHP が全体を解析するように強制されます。

于 2012-04-30T03:53:13.120 に答える
2

a)PDO(特に準備されたステートメント)を見てください。変数を使用するだけでSQLインジェクションに対して脆弱になる可能性があります

b)その部分を修正したいだけの場合:

$query = "INSERT INTO users (full_name) VALUES ('".$names["full-name"]."')";
于 2012-04-30T03:36:07.573 に答える
0

-変数に aを持つことは無効です。代わり_

于 2012-04-30T03:34:13.597 に答える
0
$query = "INSERT INTO users (full_name) VALUES ('".$names[full-name]."')";
于 2012-04-30T03:35:03.127 に答える
0

('$names[full-name]')に変更する必要があります('$names[\"full-name\"]')

于 2012-04-30T03:40:36.183 に答える