2

この MySql クエリに問題があります:

INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME', '$DESC', '$TIME', '$UID')

基本的に、スクリプトは、グループを登録した人のグループ名、説明、時間、およびユーザー名を mysql データベースに追加します。

完全なスクリプト:

<?php
include_once('include/session.php');
$GNAME = $_POST['groupname'];
$DESC = $_POST['desc'];
$SPAM = $_POST['spam'];
$UID = $_POST['UID'];
$TIME = date('Y-m-d H:i:s');
if($SPAM == "queuee"){


$query ="INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME','$DESC','$TIME', '$UID')";

$result = mysql_query($query) or die("There as been an Error! <hr>Error:<hr>".mysql_error() ."<br><hr><a href=\"../index.php\">Go Back</a>");
header("Location: ../group.php?id=$GNAME");
}else{
?>
The Security Question was wrong. Try Again.

<?
}
?>

Phpmyadmin を使用して、クエリを MySql 自体に直接実行しました。ただし、それでもエラーが発生しました。エラーは次のとおりです。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC, TIME, OWNER) VALUES ('$GNAME', '$DESC', '$TIME', '$UID')' at line 1

おそらく私は完全な愚か者であり、明らかな間違いに気づいていません。さらに情報が必要な場合は、お尋ねください。

どうもありがとう。

4

7 に答える 7

6

「DESC」はキーワードです。バッククォートに入れてください。

..., `DESC`, ...
于 2012-09-06T19:55:19.287 に答える
3

DESC予約キーワードです。列名に使用する必要がある場合は、バッククォートでラップします。

`DESC`

于 2012-09-06T19:55:38.617 に答える
2

試す:

INSERT INTO groups (`NAME`, `DESC`, `TIME`, `OWNER`) VALUES ('$GNAME','$DESC','$TIME', '$UID')";

列名として予約語を使用しています-その場合、PHPはひどく混乱します。

また、コードはSQLインジェクションに対してオープンであり、mysql_*関数の使用から離れることを検討する必要があることも付け加えておきます。

mysqliのクイックスタートガイドはhttp://www.php.net/manual/en/mysqli.quickstart.phpにあります。

PDOは別のオプションです。プリペアドステートメントに関する情報は、http://www.php.net/manual/en/pdo.prepared-statements.phpにあります。

于 2012-09-06T19:55:48.770 に答える
1

DESCはSQLキーワードです。列名をエスケープするには、「」を使用してください。

$query ="INSERT INTO `groups` (`NAME`, `DESC`, `TIME`, `OWNER`) VALUES ('$GNAME','$DESC','$TIME', '$UID')";
于 2012-09-06T19:56:12.977 に答える
1

MySQL Reserved Wordsによると、「DESC」という単語は、バッククォートで囲まない限り、フィールド名として使用できません。

于 2012-09-06T19:56:58.963 に答える
0

「INSERTINTOgroups」の部分でDESCを一重引用符(または二重引用符)で囲みます。DESCは予約語であり、引用符で囲む必要があります。

于 2012-09-06T19:56:59.610 に答える
0

使用する

$DESCRIPTION = $_POST['desc'];

のはめ込み

$DESC = $_POST['desc'];

クエリでの$DESCRIPTION変数の使用

$query ="INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME','$DESCRIPTION','$TIME', '$UID')";
于 2012-09-06T19:58:06.080 に答える