2016-04-24 5 views
1

私は問題に直面するつもりです。私のコードの行が動いているようです。それはelseと一緒に戻り、実行したくないようです。そこにエラーはありませんが、それはデータベースに移動しません。タイトルには、if文のmysqli_queryがあります。ここにコードがありますが、私はエラーがどこにあるのかを矢印で示しています。mysqli_query文がない場合には

 $t_name = $_POST['topic_name']; 
     $content = $_POST['con']; 
     $date = date("y-m-d"); 

     if(isset($_POST['submit'])) { 
      if($t_name && $content) { 
       if(strlen($t_name) >= 10 && strlen($t_name) <= 70) { 
//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 
        if($query = mysqli_query($connect, "INSERT INTO topics('topic_id', 'topic_name', 'topic_content', 'topic_creator', 'date') VALUES ('', '".$t_name."', '".$content."', '".$_SESSION["username"]."', '".$date."')")) { 
         echo "<font color = 'green'>Topic posted!</font>"; 
        } else { 
         echo "<font color='red'>Unknown failure, time to panic!</font>"; 
        } 
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
       } else { 
        echo "<font color='red'>Topic name must be between 10 and 70 characters long!</font>"; 
       } 
      } else { 
       echo "<font color='red'>All fields must be filled out!</font>"; 
      } 
     } 
    } else { 
     include('header.php'); 
     echo "You must be logged in to access this page. Click <a href='login.php'>here</a> to login."; 
    } 
    include('footer.php'); 

私は私のコードを下にしたらはい、私は、SQLインジェクションや他のものの危険性を認識しています、私はそれに対処します。私はあなたのクエリをデバッグするために、あなたをお勧めしたい、自分の誤りを理解するために「topic_id」、「TOPIC_NAME」....「日付」

$query = mysqli_query($connect, "INSERT INTO topics(topic_id, topic_name, topic_content, topic_creator, date) VALUES ('', '".$t_name."', '".$content."', '".$_SESSION["username"]."', '".$date."')") 

+0

トピックID列を挿入から削除しようとしましたか? –

+1

ああ、と日付をmysqlの取引を残す! "now()"関数を使用してください!! https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_now –

+1

@HizerCacheは、感謝を知っていたことはありません! – SkrillexNukehulk

答えて

2

topic_idをnullに設定することはできません。代わりにtopic_idを削除するか、defaultという値を付けます。 @HizerCacheが述べたように

また、あなたはMySQLの機能NOW()を使って現在の時刻を挿入することができます。

"INSERT INTO topics(topic_id, topic_name, topic_content, topic_creator, date) VALUES (default, '".$t_name."', '".$content."', '".$_SESSION["username"]."', NOW())" 

また、デバッグエラーにmysqli_error()を使用します。このような

何か。

if($query = mysqli_query($connect, "INSERT INTO topics('topic_id', 'topic_name', 'topic_content', 'topic_creator', 'date') VALUES ('', '".$t_name."', '".$content."', '".$_SESSION["username"]."', '".$date."')")) { 
    echo "<font color = 'green'>Topic posted!</font>"; 
} else { 
    echo "Error : " . mysqli_error($connect); 
} 
+0

サーバー上では、私はtopic_IDを自動インクリメントにしました。十分ではありませんか? – SkrillexNukehulk

+0

はい、 'default'が動作します。 @ObjectManipulatorは、 '」「'を渡すことで – user3284463

+0

@SkrillexNukehulkを述べたか、あなたはそれを残すことができます、それはできない、空の文字列を挿入するためにMySQLを語っています。それは今理にかなって – user3284463

3

すべての列名に引用符を削除してください。 mysqli_error()機能を試してみてください。

if (...) { 

} else { 
    die(mysqli_error($connect)); // Add this 
} 
関連する問題