2

データベースにクエリを挿入しようとして問題が発生しました。挿入クエリを実行する必要があるこのphpフォームがありますが、エラーも発生しません。

これは、次の形式のクエリの例です。

INSERT INTO FlashVideoList ('title', 'urltitle', 'description', 'tags', 'category', 'filename', 'filetype', 'size', 'uploadedbyuser', 'uploadtime') VALUES ('testtitle','testtitle','test','testtags','FlashVideo','SMILE!.swf','application/x-shockwave-flash','1007525','0','1339102426'); 

これを取得するためにクエリの内容をエコーし​​ました

これはphpコードです:

function MySqlQuery($Query)
{
    // Invokes global connection info
    global $MySQL_Host, $MySQL_Username, $MySQL_Password, $MySQL_Database, $MySQL_Port;
    global $mysqli;

    // runs query
    $result = $mysqli->query($Query);
    return $result;
}

$mysqli = new mysqli($MySQL_Host, $MySQL_Username, $MySQL_Password, $MySQL_Database, $MySQL_Port);

    MySqlQuery("INSERT INTO FlashVideoList ('title', 'urltitle', 'description', 'tags', 'category', 'filename', 'filetype', 'size', 'uploadedbyuser', 'uploadtime') " .
    "VALUES ('" . $mysqli->real_escape_string($_SESSION['Title']) . "','" . $mysqli->real_escape_string(GetUrlTitle()) . "','" . $mysqli->real_escape_string($_SESSION['Description']) . "','" .
    $mysqli->real_escape_string($_SESSION['Tags']) . "','" . $_SESSION['Category'] . "','" . $mysqli->real_escape_string($FlashFileName) . "','" . $mysqli->real_escape_string($_FILES["file"]["type"]) . "','" .
    $mysqli->real_escape_string($_FILES["file"]["size"]) . "','" . $mysqli->real_escape_string($UploadUserID) . "','" . time() . "');");

mysqli_free_result($result);
mysqli_close($mysqli);

Selectクエリは、これと同じコードで正常に機能します。

編集:さて、私はいくつかの進歩を遂げました、可能なすべてについてこのコードで間違っているようです:Pだから、ええ、これは今私のクエリです:

INSERT INTO FlashVideoList (`title`, `urltitle`, `description`, `tags`, `category`, `filename`, `filetype`, `size`, `uploadedbyuser`, `uploadtime`) VALUES (`letitle`,`letitle`,``,`tagzz`,`FlashVideo`,`585336_pokemonsnewgrounds.swf`,`application/x-shockwave-flash`,`5058231`,`0`,`1339103842`); 

そして、navicatを介して直接実行すると、エラーが発生します。

[Err] 1054 - Unknown column 'letitle' in 'field list'

誰かが私が間違っていることを知っていますか?:/

4

3 に答える 3

1

エラーメッセージを読んでください。どのようなエラーメッセージですか?まあ、それは別の問題ですが、挿入が失敗した理由を説明しているでしょう1

コメントで言及されている1つの(しかしおそらく唯一ではない)問題は'、有効な識別子の引用ではないため、解析エラーが発生することです。MySQLでは、デフォルトはですが、 ANSI引用符を使用する場合は(に)`変更できます。"

INSERT INTO FlashVideoList (`title`, ...)

1 mysqliの基本的なエラー処理の例を次に示します(一番下までスクロールします)。基本的な考え方は、queryFALSEが返された場合、何かが失敗したため、error相談できる/すべきであるということです。

また、コードをクリーンアップして、「プロキシ」関数呼び出しを取り除くことをお勧めします。

于 2012-06-07T21:11:33.030 に答える
1

エラーをmsysqli_error()見つけるのに役立ちます

例えば。mysqli_query($query) or die(mysqli_error());

于 2012-06-07T21:14:12.053 に答える
0

そもそもなぜバッククォート(または一重引用符)を使用するのですか?予約語を使用できますが、それは私が広めるものではありません。代わりに、適切な列名を使用してください。

于 2012-06-07T21:38:23.977 に答える