2011-12-28 13 views
2

これはなぜ動作しないのか分かりません。 「メモが追加されました」と表示されますが、実際にはデータベースに追加されません。 ?mysqlが誤動作する

<?php 

    $notetitle = $_POST['title']; 
    $notebody = $_POST['body']; 

if ($notetitle && $notebody){ 
mysql_query("insert into notes values 
('$user_id', '', '$subject', '$notetitle', '$note_type' '$notebody')"); 

echo "Note \"" . $notetitle . "\" added."; 
} 

>

+1

if($ notetitle ...)に入ると、挿入されていなくても常にエコーが行われることに注意してください。 – Nobita

+0

mysql注入に対して自分自身を守ることを忘れないでください(mysql_real_escape_string()http://php.net/manual/en/function.mysql-real-escape-string.phpを使用)。 – s3v3n

答えて

7

カンマを逃した:

('$user_id', '', '$subject', '$notetitle', '$note_type', '$notebody')"); 
+0

それはそうするだろう。ありがとう! –

0

あなたのSQLクエリは非常に有効ではありません - あなたはまた、それに設定したい列名を追加する必要があります〜INSERT

mysql_query("insert into notes (id, smth, subject, ... etc) values 
('$user_id', '', '$subject', '$notetitle', '$note_type', '$notebody')"); 
+0

すべての列に値を指定する必要はありません。 – s3v3n

+0

@ s3v3n - あなたは正しいですが、私の意見では**明示的は明示的ではありません** – user1118250

+0

はい、私はあなたに同意する方が良いと同意します。ちょうど「あなたも追加しなければならない」と言いたかったのですが、それは「必須」を意味するでしょう。とにかく、私たちは事を十分にクリアしたと思う。 – s3v3n

1

あなたはいくつかのミスタあなたのコードのkes。以下のコードを使用して確認してください。私はあなたのデータの正確性について確認するために多くのものを追加しました:あなたはMySQLのクエリで「$のnotebody」前コンマを忘れてしまった

<?php 

$notetitle = $_POST['title']; 
$notebody = $_POST['body']; 

if ($notetitle != '' && $notebody !='') { 
    $myQuery = mysql_query("INSERT INTO notes VALUES 
          ('$user_id', '', '$subject', '$notetitle', 
          '$note_type', '$notebody')"); 

    // verify your database query and then show the message below 
    if (mysql_affected_rows()) { 
     echo "Note \"" . $notetitle . "\" added."; 
    } 
} 

?> 

ご注意を。

0

あなたは、インサートが働いて、失敗するとエラーを報告した場合、それは働いていなかった理由を、あなたは知っているだろうチェックすると....

if ($notetitle && $notebody){ 
     $qry="insert into notes values 
      ('$user_id', '', '$subject', '$notetitle', '$note_type' '$notebody')"; 
     if (mysql_query($qry)) { 
      echo "Note \"" . $notetitle . "\" added."; 
     } else { 
      print "Failed: $qry\n" . mysql_error(); 
     } 
} 

エラーと例外を処理していないが非常に悪いプログラミングです。挿入文で列を宣言していないと、が非常にになります。明示的なデータベースハンドルを使用しないことは面倒です。あなたのコードをコメントするのは悪い習慣です。

0

あなたはこのように書くためにあなたがすべき良い方法では、

を「『$のnote_type』 『$のnotebody』」の間にカンマを見逃している:=

$notetitle = $_POST['title']; 
    $notebody = $_POST['body']; 

if ($notetitle && $notebody){ 
mysql_query("insert into notes 
set userid='$user_id', 
subject = '$subject', 
notetitle = '$notetitle', 
note_type = '$note_type', 
notebody = '$notebody' "); 

} 

実際には、あなたのコラムを競合することはありません名前と値。 :)

関連する問題