-1

私はこのmysqlクエリを持っています:

$sql = "INSERT INTO lijsten(naam, niveau, nederlands, duits, frans, grieks,
engels, latijn, spaans, wiskunde, natuurkunde, scheikunde, geschiedenis,
economie, aardrijkskunde, ANW, godsdienst)
VALUES(\$_POST["naam"]\,\$_POST["niveau"]\,\$_POST["nederlands"]\,\$_POST["duits"]\,\$_POST["frans"]\,\$_POST["grieks"],\$_POST["engels"]\,\$_POST["latijn"]\,\$_POST["spaans"]\,\$_POST["wiskunde"]\,\$_POST["natuurkunde"]\,\$_POST["scheikunde"]\,\$_POST["geschiedenis"]\,\$_POST["economie"]\,\$_POST["aardrijkskunde"]\,\$_POST["ANW"]\,\$_POST["godsdienst"]\)";

次の関数でデータベースに送信されます。

function connectDB($sql) {
$DBcon = mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db(database);
$result = mysql_query($query) or die(mysql_error());
mysql_close($DBcon);
return $result;

しかし、実行しようとすると、php parse エラーが発生します。

PHP Parse error:  syntax error, unexpected 'naam' (T_STRING) in /media/usbdisk/website/www/boeken/naardb.php on line 11

誰かが私が犯している間違いを教えてもらえますか? 私はすでにクエリを配置する多くの方法を試しましたが、どれもうまくいきませんでした。

4

3 に答える 3

1

次のように、クエリ内の変数を連結してみてください。

"INSERT INTO lijsten(naam, niveau, nederlands, duits, frans, grieks,
engels, latijn, spaans, wiskunde, natuurkunde, scheikunde, geschiedenis,
economie, aardrijkskunde, ANW, godsdienst)
VALUES("
.mysql_escape_string($_POST['naam']).
")";

また、 SQL インジェクションについても読むことができます。

@meda の回答は、PDOを使用して SQL 呼び出しを作成する方法の正しい例です。

于 2015-12-28T22:01:46.687 に答える
1
  1. このようなクエリを作成しないでください。
  2. これは値をエスケープする方法ではありません
  3. mysql_は推奨されておらず、準備済みステートメントを使用する必要があります

PDO での例:

$sql = "INSERT INTO lijsten(naam, niveau, nederlands, duits, frans, grieks,
engels, latijn, spaans, wiskunde, natuurkunde, scheikunde, geschiedenis,
economie, aardrijkskunde, ANW, godsdienst)
VALUES(:naam,:niveau .......)";

if($stmt = $pdo->prepare($sql)){
    $stmt->bindValue(:naam, $_POST["naam"]);
    .....
    $stmt->execute();
}
于 2015-12-28T22:01:59.723 に答える
0

いくつか間違いがありますが、私は問題から始めます。

unexpected 'naam' (T_STRING)...

PHP がそこに文字列を予期していなかったために発生します。クエリの一部をエスケープしていますが、実際には $_POST 変数を連結するだけで済みます。

投稿変数を独自の変数に設定して、クエリを簡素化し、この回答の概要のようにクエリをフォーマットすることをお勧めします: Using php variables inside MySQL insert statement

IE:$naam = $_POST["naam"];など...

最大の問題は、非推奨のメソッドを使用していることです。PDO (Prepared) クエリを使用する必要があります

PHP の非推奨メソッド。

PDOの使用とステートメントの準備を必ず検討する必要があります。

PDO のいくつかのクイック リファレンス:

幸運を!

于 2015-12-28T22:00:36.237 に答える