2017-01-27 15 views
0

接続が成功し、データベース上のクエリを手動で使用してもINTOが実行されません。 データベースサーバはMySqlデータベースサーバです。PHP Insert Into is not beeingを実行しました

私は、これは機能が正常にここ

if (isset($_POST["btn_register"]) && strlen($_POST["txt_username"]) > 3 && strlen($_POST["txt_password"]) > 3) { 
    $username = $_POST["txt_username"]; 
    $password = md5($_POST["txt_password"]); 
    $email = $_POST['txt_email']; 
    $activationcode = rand(10000, 99999); 
    fcn_execSql("INSERT INTO db_Projekt.tblUsers (idUsername,dtPassword,dtEmail,dtActivationcode)VALUES('$username','$password','$email','$activationcode')"); 
    sendmail($email, $activationcode, $username); 
} 

Database structure

を使用beeingているSQL

function fcn_execSql($thissql, $return = "default") { 
    //defining the values needed to establish a connection 
    if ($_SESSION["isdefined"] == false) { 
     define('DB_SERVER', '31.220.59.149'); 
     define('DB_USERNAME', 'USERNAME'); 
     define('DB_PASSWORD', 'PASSWORD'); 
     define('DB_DATABASE', 'db_Projekt'); 
     $_SESSION["isdefined"] = true; 
    } 
    //connecting using the values defined before 
    $conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
    //trying to connect 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    //executing a query and writing its result into a variable 
    $result = $conn->query($thissql); 
    if ($result == false) { 
     $conn->close(); 
     die; 
    } 
    if ($return == "JSON") {           //query 
     $array = mysqli_fetch_row($result);       //fetch result 
     $returnedjson = json_encode($array); 
     echo $returnedjson; 
    } 
    if (strpos($thissql, 'SELECT') !== false) { 
     $array = array(); 
     $i = 0; 
     $rowcount = $result->num_rows; 
     if ($rowcount > 0) { 
      //closing the SQL Connection again 
      $conn->close(); 
      //returning query results 
      if ($rowcount > 1) { 
       while ($row = mysqli_fetch_assoc($result)) { 
        $array[] = $row; 
       } 
      } else { 
       $row = mysqli_fetch_assoc($result); 
       return $row; 
      } 
      return $array; 
     } //returning false in case of a failure and closing the connection 
     else { 
      $conn->close(); 
      return false; 
     } 
    } else { 
     $conn->close(); 
     return true; 
    } 
} 

を行う機能である

$username = $_SESSION['username']; 
if (isset($_POST["btn_addevent"])) { 
    $username = $_SESSION['username']; 
    $eventname = htmlentities(addslashes($_POST["txt_eventname"])); 
    $eventdate = htmlentities(addslashes($_POST["dt_date"])); 
    $eventtime = htmlentities(addslashes($_POST["tm_time"])); 
    $eventgame = htmlentities(addslashes($_POST["txt_game"])); 
    fcn_execSql("INSERT INTO db_Projekt.tbleventstest (dtUserName, dtEventName, dtEventTime, dtEventdate,dtGame)VALUES('$username','$eventname','$eventtime','$eventdate','$eventgame')"); 
} 

関数を呼び出す場所です

+2

このコードは、SQLインジェクション攻撃の天国のようです。 –

+0

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart)を使用する必要があります。 prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 'hemlentities'はSQLのエスケープ方法ではありません**。 – tadman

+0

私はこのようにSQLコードを書くことをどこで学んだのか分かりませんが、これは本当に危険なコードです。これが公にアクセス可能な場所に配備されていると、妥協の危機にさらされます。 – tadman

答えて

0

それは私にはいいようです。これらの$ _POST変数がすべて正しく設定されていますか?

また、DB構造を確認できますか?

編集:

あなたは、クエリの最後に

$eventgame 

値の前後に引用符が欠落しています。これは違いを生むかもしれません。

+0

投稿の値は正しいです。私はSQLをエコーし​​て、手動でデータベースでそれを使用してみました。それは問題を解決しませんでした。 – CampbellL

+0

私の編集を見ましたか?それらの引用符を追加しようとしましたか? –

+0

私はしましたが、彼らは悲しんで問題を解決しませんでした。 – CampbellL

関連する問題