2016-06-25 6 views
-1

У меня есть администраторы, которые вставляют записи в базу данных, другие значения правильно вставляются в базу данных, но значение параметра не вставляется. Сначала администратор входил в систему и начал свою сессию, после чего добавлял новые записи в базу данных. Пожалуйста, помогите.Выберите значение, не вставляемое в базу данных

Мой HTML форма

<form method="post" action="" enctype="multipart/form-data" role="form"> 

    <div class="col-md-4 form-group"> 
     <label for="SubjectMaterialTitle">Subject Material Title</label> 
     <input type="text" name="sub_title" placeholder="Subject Material Title" class="form-control" required> 
    </div> 

    <div class="col-md-4 form-group"> 
     <label for="Downloadurllink">Download url link</label> 
     <input type="text" name="sub_url" placeholder="Download url link" class="form-control" required> 
    </div>          

    <div class="col-md-4 form-group"> 
     <label for="exampleInputFile">File input</label> 
     <input type="file" name="sub_file" id="exampleInputFile" required> 
     <p class="help-block">Upload Image/File upto 2MB size only</p> 
    </div> 

    <div class="col-md-4 form-group"> 
     <label for="WritenBy">Writen By</label> 
     <select class="form-control" name="writen_by"> 
      <?php if(isset($_SESSION['admin_email'])){ 
         echo '<option value='. $_SESSION['admin_username'] .'>'. $_SESSION['admin_username'] .'</option> '; 
        } 
      ?> 
     </select> 
    </div> 

</form> 

PHP код

<?php 

include("includes/config.php"); 
global $con; 
    if(isset($_POST['add_submat'])){ 

     //getting the text data from the fields 
     $sub_title = $_POST['sub_title']; 
     $sub_url = $_POST['sub_url']; 
     $writen_by = $_POST['writen_by']; 

     //getting image from the fields 
     $sub_file = $_FILES['sub_file']['name']; 
     $sub_file_tmp = $_FILES['sub_file']['tmp_name']; 

     move_uploaded_file($sub_file_tmp,"sub-material-files/$sub_file"); 

     //insert data into table 
     $insert_submat = "insert into m_study_material (sm_title,sm_downloadurl,sm_image,created_by) values ('$sub_title','$sub_url','$sub_file','$writen_by')"; 

     echo $insert_submat; 

     $run_submat = mysqli_query($con, $insert_submat); 

     //error_reporting(E_ERROR); 

     if($run_submat){ 
      echo "<script>alert('Inserted Successfully.')</script>"; 
     } else{ 
      echo "Not inserted"; 
     } 
    } 
?> 
+0

Пожалуйста, загрузите структуру базы данных тоже. Или попробуйте копировать результат 'echo $ insert_submat' и вставлять его в свой исполняемый файл DBMS Insert Query, после чего разместите изображение результата здесь –

ответ

0

Вы забыли добавить кавычки Arround значения, то почему значения в настоящее время пост должным образом.

<?php 
    if(isset($_SESSION['admin_email'])){ 
     echo '<option value="'. $_SESSION['admin_username'] .'">'. $_SESSION['admin_username'] .'</option> '; 
    } 
    ?> 
+0

Зачем OP« попробуйте »это? –

+0

@Rishi спасибо ... ваш ответ работает на меня для добавления продуктов .. .. но когда я использую то же самое для функции редактирования, это не работает –

+0

@jay Я обновил ans. – C2486

0

Первое исправление

<div class="col-md-4 form-group"> 
    <label for="WritenBy">Writen By</label> 
    <select class="form-control" name="writen_by"> 
     <?php if(isset($_SESSION['admin_email'])): ?> 
      <option> 
       <?= $_SESSION['admin_username']; ?> 
      </option> 
     <?php endif; ?> 
    </select> 
</div> 

Во-вторых, вы должны рассмотреть очистки пользовательского ввода перед вставкой, потому что ваш код в настоящее время широко открыты для инъекций нападения. See more about SQL Injection in PHP

Например, вы могли бы использовать вспомогательные функции, такие как

function cleanInput($input) 
{ 
    $search = array(
     '@<script[^>]*?>.*?</script>@si', // Strip out javascript 
     '@<[\/\!]*?[^<>]*?>@si',   // Strip out HTML tags 
     '@<style[^>]*?>.*?</style>@siU', // Strip style tags properly 
     '@<![\s\S]*?--[ \t\n\r]*>@'   // Strip multi-line comments 
    ); 
    $output = preg_replace($search, '', $input); 
    return $output; 
} 
function prepare($input) 
{ 
    if (get_magic_quotes_gpc()) 
    { 
     $input = stripslashes($input); 
    } 
    $input = cleanInput($input); 
    return mysql_real_escape_string($input); 
} 

Таким образом, вы могли бы сделать это прежде, чем любой SQL-запрос

$sub_title = prepare($_POST['sub_title']); 
$sub_url = prepare($_POST['sub_url']); 
$writen_by = prepare($_POST['writen_by']); 
+0

..thanks .. но когда я добавлю свой код, он не вставляет и не редактирует ... –

+0

Yikes! Это много ненужного регулярного выражения! ОП должен использовать подготовленные заявления. –

+0

Г-н Джей Бланшар. Для всех, кого мы знаем, его весь проект был построен с использованием этого метода. Я для одного не использовал его более двух лет, поэтому лучше защищать его систему, пока его хозяин растет в своем собственном темпе. @shekharjadhav был переменный оператор доллара перед возвратом в функции prepare(). поэтому код не работал –