2016-04-03 21 views
0

私のデータベースにデータを保存する際に問題があります。つまり、私のannouncement_requestテーブルでは、タイトル、説明、イメージパスがsubmittedBybatchYrを除いてデータベースに保存されています。一部のデータがデータベースに保存されないのはなぜですか?

は私request_announcement.phpはこれです:

<?php 

$login_session =$row['username']; 
$position = $row['position']; 
$login_fname = $row['firstname']; 
$login_lname = $row['lastname']; 
$batchYr = $row['batchYr']; 

$submittedBy = $login_fname.' '.$login_lname; 
if(isset($login_session) and $position=='President'){ 
?> 

      <form action="../pres/send_request_announcement.php" method="post" enctype="multipart/form-data"> 

       <label>Submitted by:</label> 
       <input type="text" name="submittedBy" class="form-control" value="<?php echo $submittedBy;?>" disabled > <br/> 

       <label>Batch Year:</label> 
       <input type="text" name="batchYr" class="form-control" value="<?php echo $batchYr;?>" disabled><br/> 

<input type="submit" name="submit" value="Request Announcement" style="float: right"/> 

       </form> 
<?php 
} 

?> 

そして、これが私のsend_request_announcement.phpです:

<?php 
    include_once('db.php'); 
    if(isset($_POST['submit'])) { 

     $submittedBy = $_POST['submittedBy']; 
     $batchYr = $_POST['batchYr']; 


     $sql = "INSERT INTO announcement_requests (submittedBy, batchYr) VALUES('$submittedBy','$batchYr')"; 
      mysql_query($sql); 

      echo "<script type='text/javascript'>alert('Announcement Request Sent!'); window.location.assign('../user/home.php');</script>"; 

    } 

?> 
+0

mysqlとmysqliを混在させています – Mihai

+0

この問題がまだ残っている部分だけを残してコードを減らしてください。このチェック:それはタイトルのように、他の列の理由だ場合http://stackoverflow.com/help/mcve –

+0

、説明があまりにも保存すべきではない、しかし、彼らはデータベースに保存されているが、ちょうどない 'submittedBy'と' batchYr' @Mihai – user6151429

答えて

0

まず第一に、そのあなたがしたくない非推奨と悪い拡張子をmysql_*を使用して終了使用に慣れる。

、それがデータベースに保存することが文句を言わない理由に来る:あなたは両方mysql_*mysqli_*機能を使用している
、彼らは同じlibにはありませんので、あなたがmysqliでデータベースに接続するときは、することができませんmysql_*コールで使用してください。
mysql_*のすべてのコールを適切なmysqli_*コールにスワップするとうまくいくはずです。

詳細... に関する章をPHPのドキュメントmysqliでチェックしてください。それは瞬時に脆弱なSQLインジェクションの予防に役立ちます。

+1

'mysqli_ *'は廃止予定のAFAIKではありません。しかし、PDOはとにかく優れています。 – Taylan

+0

申し訳ありませんが、それは誤ったタイプでした。もちろんmysql_ *でなければなりません。それを指摘するためのThanx! :) – Jite

+0

は、mysqli_iよりもPDOを使用する方が優れています。 PDOで私を助けた素晴らしいチュートリアルは[(唯一の適切な)PDOチュートリアルです](https://phpdelusions.net/pdo)です。 – Laurens

0

私は何が間違っているかを知ることができました。それは私が正しいクエリを持っているにもかかわらず、データベースに保存していない理由は、私のHTML形式であるためだったである:あなたがフォームを送信するときに無効にテキストボックスが含まれていないため

<input type="text" name="submittedBy" class="form-control" value="<?php echo $submittedBy;?>" disabled > <br/> 
<input type="text" name="batchYr" class="form-control" value="<?php echo $batchYr;?>" disabled > <br/> 

は、間違っているdisabledを持っていますので、私は読み取り専用の代わりに使用:

<input type="text" name="submittedBy" class="form-control" value="<?php echo $submittedBy;?>" readOnly="readOnly"> 
<input type="text" name="batchYr" class="form-control" value="<?php echo $batchYr;?>" readOnly="readOnly"> 

readOnlyも編集できません。したがって、ユーザーが何かを編集したり入力したりせずにデータをデータベースに保存する場合は、を使用し、disabledを使用しないでください。