2017-06-30 24 views
-1

私はログインしたユーザーがプロフィールを編集できる編集プロフィールページを作成しています。私は今、以下のエラーに遭遇します。私は何をしますか?データベース接続に失敗しましたSQL構文にエラーがあります。

ERROR:

Database Connection FailedYou have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '= '[email protected]', Password = 'test', FirstName = 'hello', SecondName = 'world' at line 1 

マイコード:

  <?php 
      $connection = mysqli_connect('localhost', 'root', '', 'dbrateme'); 
      if (!$connection){ 
       die("Database Connection Failed" . mysql_error()); 
         header('Location: dcf.php'); 
      } 
      $select_db = mysqli_select_db($connection, 'dbrateme'); 
      if (!$select_db){ 
       die("Database Selection Failed" . mysqli_error()); 
      } 

      if (isset($_POST['upd'])){ 
         $course = $_POST['Course']; 
         $email = $_POST['inputEmail']; 
         $password = $_POST['inputPassword']; 
         $FN = $_POST['FirstName']; 
         $SN = $_POST['SecondName']; 

        $qsql = $_COOKIE['userID']; 
        $qresult = mysqli_query($connection, $qsql); 
        $qcount = mysqli_connect($qresult); 
        $sqli = "UPDATE tblaccounts Email = '".$email."', Password = '".$password."', FirstName = '".$FN."', SecondName = '".$SN."', Course = '".$course."' WHERE Student_ID='".$qsql."'"; 

        $result = mysqli_query($connection, $sqli) or die("Database Connection Failed" . mysqli_error($connection)); 
        //$count = mysqli_num_rows($result); 
        echo "Profile Update Successful!:"; 
        header('Location: profile.php'); 
      } else { 
         echo "Profile Update Failed!:"; 
         ?><br/><a href ="updatesettigns.php">Go back to the profile update screen.</a><?php 
        } 
      ?> 
+0

SQLインジェクションを防止するためのプリペアドステートメントの詳細 – Jens

+0

これは誤植です。あなたは 'SET'を見逃しました。 –

答えて

1

あなたのSQLに設定されたキーワードを欠場。更新の構文はUPDATE <table> SET <colum Name> = value

$sqli = "UPDATE tblaccounts SET Email = '".$email."', Password = '".$password."', FirstName = '".$FN."', SecondName = '".$SN."', Course = '".$course."' WHERE Student_ID='".$qsql."'"; 

SQLインジェクションを防止するための準備状態について学習します。

パスワードはプレーンテキストとして保存しないでください。関数を使用してそれらを暗号化する

0

問題はクエリにありますが、私の神は重大なSQLインジェクションのケースに晒されています。最初の問題をターゲットにする。

UPDATE tblaccounts Email 

変更この

UPDATE tblaccounts SET Email 

に使用しているクエリは、SQLインジェクションの脆弱性です。できるだけ早くこれを修正する必要があります。すべてのSQLクエリーに対してPDOプリペアドステートメントを使用することをお勧めします。 http://php.net/manual/en/book.pdo.php

+0

*私はPDO準備文を使用することをお勧めします*なぜPDOですか? mysqliはプリペアドステートメントも処理できます。 – Jens

+0

PDOははるかに優れた構文で、はるかに簡単なライブラリです –

関連する問題