0

プライベート メッセージング ネットワークを構築していますが、指定したテーブルにメッセージが挿入されていないようです。メッセージはテーブルにポストされ、別のスクリプトでアクセスされます。クエリの何が問題になっていますか?

   $new_of_id = $_SESSION['user_login'];

  $send_msg = mysql_query("INSERT INTO pvt_messages VALUES   ('','$new_of_id','$username','$msg_title','$msg_body','$date','$opened','$deleted')");
       echo "Your message has been sent!";
        }
      }
    echo "

    <form action='send_msg.php?u=$username' method='POST'>
    <h2>Compose a Message: ($username)</h2>
    <input type='text' name='msg_title' size='30' onClick=\"value=''\" value='Enter the message title here ...'><p />
    <textarea cols='50' rows='12' name='msg_body'>Enter the message you wish to send ...</textarea><p />
    <input type='submit' name='submit' value='Send Message'>
    </form>

    ";
    }
4

2 に答える 2

3

ここにいくつかのことがあります。

あなたのコードは、失敗の可能性を扱っていません。

現在、INSERT クエリからの戻り値を確認せずに成功メッセージを投稿しています。メッセージを出力する前に $send_msg の値を確認することで、これを修正できます。

$send_msg = mysql_query("
    INSERT INTO pvt_messages 
    VALUES(
        '',
        '$new_of_id',
        '$username',
        '$msg_title',
        '$msg_body',
        '$date',
        '$opened',
        '$deleted'
    )
");

//$send_msg will be TRUE if the row was inserted. FALSE if it wasn't.
if($send_msg){
    echo "Your message has been sent!";
}
else{
    echo "We were unable to send your message!";
}

クエリを適切にデバッグしていません。

次のように trigger_error (mysql_error()) を使用することにより:

$send_msg = mysql_query("
    INSERT INTO pvt_messages 
    VALUES(
        '',
        '$new_of_id',
        '$username',
        '$msg_title',
        '$msg_body',
        '$date',
        '$opened',
        '$deleted'
    )
") or trigger_error(mysql_error());

... INSERT の正常な実行を妨げている MySQL エラーがページに吐き出されます。このようにして、構文エラーなどを解決できます。私の推測では、空の文字列を主キー列に挿入しようとしていると思います。

mysql_* 関数:

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2012-11-15T20:59:58.220 に答える
0

このようなことを試してください-列フィールドを台無しにしているかどうかを確認するためだけです(考えられる理由である可能性があります)

$send_msg = mysql_query("
    INSERT INTO pvt_messages (
         id,
         name
         )
    VALUES(
        '',
        '$name'
    )
");
于 2012-11-15T21:26:02.240 に答える