0

これは非常に単純ですが、探している答えが見つからないようです。

これは完全に機能します:

mysql_query("INSERT INTO Courses (CourseName) values ('MyValue')");

しかし、これは機能しません:

mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')");

$_POST['course']テストしたところ、が含まれていることがわかりましたMyValue
この構文を php で使用することは許可されていますか?

私の場合、SQLインジェクションは問題ではありません。

4

4 に答える 4

0

PHP を使用します。文字列を連結する

mysql_query("INSERT INTO Courses (CourseName) values ('".mysql_real_escape_string($_POST['course'])."')");

また、mysql_real_escape_string を使用して、o'neil に一重引用符が含まれているなどのエラーを防ぎます。

于 2013-03-11T17:11:07.160 に答える
0

1) 非推奨のため、 mysql ではなく mysqli を使用してください。

2) まだ mysql を使用している場合は、常に mysql_real_escape 文字列を使用して、サイトからの変数をエスケープします...

3) コードをデバッグします。あなたの例で最も速いのは、単に次を使用することです:

      mysql_query("... your sql string ") or die(mysql_error())

エラーが表示されます。(ただし、スクリプトが稼働するときは、すべての "or die(mysql_error())+" コードをコメントアウトして、他のユーザーがエラーを確認できないようにし、サイトをハックします (とても簡単です))

4) . +ではなく、phpの文字列の連結です

于 2013-03-11T17:11:43.647 に答える
0

.の代わりに使用+

mysql_query("INSERT INTO Courses (CourseName) values ('" . mysql_real_escape_string($_POST['course']) . "')");
于 2013-03-11T17:10:34.360 に答える
0
mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')");

使用している文字列連結の方法は、PHP ではサポートされていません。他の言語でサポートされています。文字列を作成するには、複数のオプションがあります。

オプション 1: に+置き換える.

mysql_query("INSERT INTO Courses (CourseName) values ('".$_POST['course']."')");

オプション 2: 休憩なし

mysql_query("INSERT INTO Courses (CourseName) values ('{$_POST['course']}')");

言語間を移動するときは、基本を読む必要があります。特にこの場合、「PHP String Concatenation」を検索すると、必要なものが得られます。

また、PHP 5.5 で廃止されたため、MySQL_* は使用しないでください。MySQLi_* または PDO を使用

于 2013-03-11T17:15:06.657 に答える