1

私はしばらくコーディングのこの部分に固執しており、変更によって構文エラーが発生したり、不明な列であるというメッセージが表示されたりしました。私は一重引用符を使って試してみましたが、以前に二重引用符を試してみましたが、何も得られなかったと思います。問題はクエリ部分にあると確信していますが、現時点ではわかりません。

include_once "library.php";
connectdatabase();

if (isset($_COOKIE['bunny_id'])) {
    $poster = $_COOKIE['bunny_id'];
} else {
    echo "Sorry, you need to login or sign up before you can post :C";
}

if (!empty($_POST['topic_name'])) {
    $topic_name = "'" . addslashes($_POST['topic_name']) . "'";
} else {
    $topic_name = 'NULL';
    echo "Topic field is not filled :c \n";
    exit;
}

if (!empty($_POST['post_content'])) {
    $post_content = "'" . addslashes($_POST['post_content']) . "'";
} else {
    $post_content = 'NULL';
    echo "Post content is not filled :c \n";
    exit;
}

$query  = "INSERT INTO posts(messages_poster, messages_topic, messages_content) VALUES('$poster', '$topic_name', '$post_content')";
$query2 = mysql_query($query);

if (mysql_num_rows($query2) == 1) {
    echo "Topic has been created~";
    exit;
} else {
    echo "Sorry, there's been an error :c";
}

編集:私は問題を解決することができました。この問題は、コードの前の部分に引用符を追加した後で、'$topic_name' および '$post_content' に単一引用符を追加したことに関連していました (より小さな問題には、mysql_affected_rows の代わりに mysql_num_rows を使用することも含まれます)。今のところ順調です~

4

5 に答える 5

1

これを試して

 $query = "INSERT INTO posts(messages_poster, messages_topic, messages_content) VALUES('$poster', '$topic_name', '$post_content')";
    $query2=mysql_query($query);

         if(mysql_num_rows($query2) == 1) {

        echo "Topic has been created~";
    exit; 
    } else { 
        echo "Sorry, there's been an error :c";
        } 
于 2012-12-17T05:44:15.390 に答える
0

私はそれをテストするための DBMS を手元に持っていませんが、コードを最初に見ると、クエリを構築/構築しようとしているときにエラーが発生した可能性があると感じます。

$query = "INSERT INTO posts(messages_poster, messages_topic, messages_content) VALUES('$poster', '$topic_name', '$post_content')";

以下のように、クエリを別のサブルーチン (処理される場所、つまり DBMS に送信される場所) に渡す必要があることに注意してください。

$query = "INSERT INTO posts(messages_poster, messages_topic, messages_content) VALUES( 'val1',  'val2', 'val3')"; so the trick is in trying to translate $poster -> 'val1';
$topic_name -> 'val2'
$post_content-> 'val3'
于 2012-12-17T17:49:41.817 に答える
0

(messages_poster, messages_topic, messages_content)3 つの列に table が含まれていることを確認する必要がありますposts。また、クエリmysql_query($query) or die(mysql_error())をチェックして、エラーの内容を確認してください。

于 2012-12-17T05:50:45.580 に答える
0

これを試して :-

   include_once "library.php";`
  connectdatabase();`
  $poster = '';
 if(isset($_COOKIE['bunny_id'])){
        $poster= $_COOKIE['bunny_id'];
        } 
         else {
            echo "Sorry, you need to login or sign up before you can post :C";
        } 
  $topic_name = '';
  if (!empty($_POST['topic_name'])){
     $topic_name = "'". addslashes($_POST['topic_name']) . "'";
} else {
    $topic_name = 'NULL';   
    echo "Topic field is not filled :c \n";
    exit;
}   
$post_content = '';
    if (!empty($_POST['post_content'] )) { 
    $post_content = "'". addslashes ( $_POST['post_content'] ) . "'";
} else {
    $post_content = 'NULL'; 
    echo "Post content is not filled :c \n" ;
    exit;
} 

        $query = "INSERT INTO posts(messages_poster, messages_topic, messages_content) VALUES('$poster', '$topic_name', '$post_content')";
        $query2=mysql_query($query);

             if(mysql_num_rows($query2) == 1) {

            echo "Topic has been created~";
        exit; 
         } else { 
            echo "Sorry, there's been an error :c";
            } 

コードでローカルに定義されているため、これらの値 '$poster'、'$topic_name'、'$post_content' を取得できないことが問題である可能性があります。

エラーを表示してください。不明な列は、テーブルの列名が正しくないことを意味します。

于 2012-12-17T05:51:09.013 に答える
0
 include_once "library.php";`
  connectdatabase();`

 if(isset($_COOKIE['bunny_id'])){
        $poster= $_COOKIE['bunny_id'];
        } 
         else {
            echo "Sorry, you need to login or sign up before you can post :C";
        } 

  if (!empty($_POST['topic_name'])){
     $topic_name =  addslashes($_POST['topic_name']); // we no need to concat string
} else {
    $topic_name = '';   
    echo "Topic field is not filled :c \n";
    exit;
}   

    if (!empty($_POST['post_content'] )) { 
    $post_content = addslashes ( $_POST['post_content'] ) ;
} else {
    $post_content = ''; 
    echo "Post content is not filled :c \n" ;
    exit;
} 

        `$query = "INSERT INTO posts (messages_poster, messages_topic, messages_content) VALUES('$poster', '$topic_name', '$post_content')";
        $query2=mysql_query($query) or die("could not inserted");`
         $lastid = mysql_insert_id();
于 2012-12-17T05:51:13.227 に答える