0

これを見てくれてありがとう。

エラーは表示されませんが、データベースには何も書き込まれません。

誰かが私が間違っていることを手伝ってくれますか?

<?php
$subject = $_POST['subject'];
$comment = $_POST['comment'];

if(isset($_POST['submit']))
{
$connect = mysql_connect('localhost','<USER>','<PASSWORD>');
mysql_select_db("rebeler_comment");

    $query = mysql_query("INSERT INTO `cdb` ('',subject', 'comment' VALUES    ('',$subject','$comment')");


echo "Data successfully written to DB";
}

else{
echo "Sorry, there was a problem.";

}
?>
4

3 に答える 3

7

もちろん、エラーはありません。何もチェックしないので、挿入クエリの明白な構文エラーを見逃しています。

$query = mysql_query("INSERT INTO `cdb` ('',subject', 'comment' VALUES    ('',$subject','$comment')");
                                         ^^---invalid field
                                            ^---unbalanced quote
                                                               ^---missing )

フィールド名を引用符で囲むことはできません'。これにより、フィールド名ではなく、文字列に変換されます。

あなたのコードは、最低限、次の構造を持つ必要があります。

$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^

要するに、あなたの SQL は大惨事です。

于 2013-11-05T15:55:26.827 に答える
3

PDO:

$pdo = new PDO('mysql:host=localhost;dbname=database', '<USER>', '<PASSWORD>');
$stmt = $pdo->prepare('INSERT INTO `cdb` (`subject`, `comment`) VALUES (:subject, :$comment)');
$stmt->execute(array(':comment' => $comment, ':subject' => $subject));

これらの拡張機能には、準備されたクエリを作成するための組み込み関数があり、引用符とアポストロフィを問題なく使用できます。非推奨のmysql_*拡張機能を使用するよりもはるかに優れています。

于 2013-11-05T15:54:52.467 に答える
-1

試す

$subject = mysql_real_escape_string($subject);
$comment = mysql_real_escape_string($comment);
$query = mysql_query("INSERT INTO `cdb` (`subject`, `comment`) VALUES ('$subject','$comment')");

エラーチェック用check mysql_errno()(エラーより0でない)、mysql_error()エラーメッセージを含む

于 2013-11-05T15:54:29.253 に答える