2016-06-25 3 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 코드는 값이 제대로 게시하는 이유 당신은 값을 arround 따옴표를 추가하는 것을 잊었다

<?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 Executor에 붙여 넣고 여기에 결과 이미지를 게시하십시오. –

답변

0

이, 그게 전부입니다.

<?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

.. 감사합니다 ..하지만 내가 코드를 추가하면 제품을 삽입하거나 편집하지 않아도됩니다 ... –

+0

Yikes! 그건 불필요한 정규식입니다! OP는 준비된 진술을 사용해야합니다. –

+0

제이 블랜차드. 우리는 그의 전체 프로젝트가이 방법으로 구축되었음을 압니다. 나는 2 년 넘게 그것을 사용하지 않았기 때문에 마스터가 자신의 페이스대로 성장하는 동안 자신의 시스템을 보호하는 것이 더 좋습니다. @ shekharjadhav에는 prepare() 함수에서 리턴하기 전에 가변 달러 연산자가있었습니다. 그것이 코드가 작동하지 않는 이유입니다. –

관련 문제