2016-04-03 2 views
0

У меня возникла проблема с сохранением данных в моей базе данных. Я имею в виду, например, в моей таблице announcement_request, заголовок, описание, путь изображения сохраняются в базе данных, кроме submittedBy и batchYr.Почему некоторые данные не сохраняются в моей базе данных?

мой 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_* звонки, и он должен работать лучше.

Далее ... Ознакомьтесь с главой о prepared statements в документации по 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, который является неправильным, потому что инвалиды Textboxes не включены при отправке формы , так что я использовал вместо доступен только для чтения:

<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 также не редактируется. Поэтому, когда вы хотите сохранить данные в базе данных без редактирования или ввода чего-либо, просто используйте readOnly, а не disabled.

Смежные вопросы