【解決方法】mysqk への挿入を修正する


INSERT INTO `liceo1`(`rut`, `admin`, `lname`, `fname`, `password`, `email`, `work`, `profesion`, `ciudad`, `phone`, `yearin`, `cursoin`, `profein`, `yearout`, `cursoout`, `profeout`, `comments`, `created`) VALUES (208090801,0,Sepda,Lautaro,Qwert123,ivan.sepdagmail.com,学生, 主任, nunoa,940429390,1950,4toB,ssss, 1960,6F,zaqw,ivanismeagain, 23/01/18 )

#1054 - Unknown column 'Sepda' in 'field list' using PHPADMIN

@なしでメールを修正し、すべてのスペースを削除したところ、私の名前が気に入らなかった…
私が得る私のPHPを実行する

Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@gmail.com,estudent, chief,nunoa,940429390...' at line 4 in C:\xampp\htdocs\liceo1\include\liceoFuncs.php:118 Stack trace: #0 C:\xampp\htdocs\liceo1\include\liceoFuncs.php(118): mysqli_query(Object(mysqli), 'INSERT INTO `li...') #1 C:\xampp\htdocs\liceo1\reglogcontact.php(21): register_exalumno(Object(mysqli)) #2 {main} thrown in C:\xampp\htdocs\liceo1\include\liceoFuncs.php on line 118

私が試したこと:

I fixed the email with no @ and eliminated all spaces in between columns variablesand then it didn't like my lname..

解決策 1

「Sepda」は列名であると言っています。これは、文字列値であることを示す引用符で区切られていないためです。

しかし、あなたの問題はそれよりも悪いです: SQL コマンドを構築するために文字列を連結しないでください。 データベース全体を破壊する可能性のある、偶発的または意図的な SQL インジェクション攻撃にさらされる可能性があります。 代わりに、常にパラメーター化されたクエリを使用してください。

文字列を連結すると、SQL が次のようなコマンドを受け取るため、問題が発生します。

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'

ユーザーが追加した引用符は、SQL に関する限り文字列を終了させ、問題が発生します。 しかし、それはもっと悪いかもしれません。 代わりに「x’;DROP TABLE MyTable;–」と入力すると、SQL は非常に異なるコマンドを受け取ります。

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'

どの SQL が 3 つの別個のコマンドとして認識されるか:

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';

完全に有効な SELECT

SQL
DROP TABLE MyTable;

完全に有効な「テーブルの削除」コマンド

SQL
--'

そして、それ以外はすべてコメントです。
一致する行を選択し、DB からテーブルを削除し、それ以外は無視します。

したがって、常にパラメーター化されたクエリを使用してください。 または、DB をバックアップから頻繁に復元する準備をしてください。 バックアップは定期的に取っていますよね?

パラメータを使用するように PHP のクエリ全体を変更すると (そしてアプリで他のすべてのクエリを同時に実行すると)、問題は解消されます。

コメント

タイトルとURLをコピーしました