2017-02-10 2 views
0

学生情報をmysqlデータベースに挿入してユーザーIDで返信する簡単なPHPプログラムを作成しています。このスクリプトはうまくいく場合もあります。しかし時々それは働かない。この種の行動の考えられる理由は何か。私のプログラムにバグがある場合は、修正を提案してください。以下は私の学生登録スクリプトとmysqlデータベース機能です。私はPHPがうまくいかないので、是正訂正してください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 


    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インジェクションを防止する最も冗長で面倒な方法です。準備されたステートメントを使用することをお勧めします。 –

関連する問題