2017-02-10 1 views
0

학생 정보를 mysql 데이터베이스에 삽입하고 사용자 ID로 응답하는 간단한 PHP 프로그램을 작성하고 있습니다. 이 스크립트는 때로는 잘 작동합니다. 그러나 때로는 작동하지 않습니다. 이런 종류의 행동에 대한 가능한 이유는 무엇입니까? 내 프로그램에 버그가있는 경우 수정을 제안하십시오. 아래는 제 학생 등록 ​​스크립트와 MySQL 데이터베이스 기능입니다. 어떤PHP 스크립트가 데이터를 데이터베이스에 삽입하는 경우가 있습니다.

<?php 
    $username = $_POST['name']; 
    $clgName = $_POST['clg_name']; 
    $branch = $_POST['branch']; 
    $sem = $_POST['sem']; 
    $mobile = $_POST['mobile']; 
    $email = $_POST['email']; 
    $profile_pic_color = $_POST['profile_pic_color']; 
    $deviceId = $_POST['device_id']; 

    include "DatabaseHandler/DBFunctions.php"; 

    $db = new DBFunctions(); 

    $query = "INSERT INTO user_details(user_name, user_clgName, user_branch, user_sem, user_mobile, user_email, profile_color, device_id) values('$username', '$clgName', '$branch','$sem', '$mobile', '$email', '$profile_pic_color', '$deviceId')"; 

    list($result, $mysqli) = $db->select($query); 

    $query = "SELECT MAX(user_id) FROM user_details"; 

    if($mysqli->affected_rows > 0){ 

     list($result, $mysqli) = $db->select($query); 

     $arr = array(); 

     if($result){ 
      $row = $result->fetch_array(); 
      $arr[] = $row; 
      echo json_encode($arr); 
     } 
    } 

?> 

가 그리고 이것은 내 데이터베이스 관리자 PHP 스크립트 인 경우 내가 PHP에서 좋은 아니에요, 수정 제안하시기 바랍니다.

<?php 


    class DBFunctions{ 



     public function connect(){ 
      include "DBConfig.php"; 
       $mysqli = new mysqli($domain, $username, $password, $database); 

      return $mysqli; 
     } 

     public function query($query){ 
       // Connect to the database 
      $mysqli = $this -> connect(); 

      // Query the database 
      $result = $mysqli -> query($query); 

      return array($result, $mysqli); 
     } 

     public function select($query){ 

      $mysqli = $this -> connect(); 

      $result = $mysqli -> query($query); 

      if($result === false) { 
         return false; 
       } 

       return array($result, $mysqli); 
     } 
    } 
?> 
+0

어떤 제약이 있습니까? 고유 한 열? –

+0

auto_increment가있는 기본 키만 –

+0

'하지만 언젠가는 작동하지 않습니다.'라는 뜻입니까? 작동하지 않을 때는 무엇이라고 말합니까? 어떤 오류입니까? –

답변

0

이 동작은 이유를 발견했습니다. 일부 입력 문자열에는 작은 따옴표가 있습니다. 때문에 SQL 쿼리 구문이 실패합니다. PHP의 real_escape_string() 함수를 사용했습니다. 이제는 효과가 있습니다. 고맙습니다 모두

+0

그것은 SQL 주입을 방지하는 가장 장황하고 성가신 방법입니다. 준비된 진술을 사용하는 것이 좋습니다. –

관련 문제