[ad_1]
ERROR: 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 'WHERE id = '7'' at line 1
私のコード:
<?php include "db.php";?> <?php include "functions.php"; ?> <?php if(isset($_POST['submit'])){ $username = $_POST['username']; $password = $_POST['password']; $id = $_POST['id']; $query = "UPDATE users SET username = '$username', password = '$password', WHERE id = '$id' "; $result = mysqli_query($connection, $query); if(!$result){ die("ERROR".mysqli_error($connection)); } }
私が試したこと:
オンラインで多くのアドバイスを試しましたが、このエラーを解決できませんでした。
解決策 1
の最後に余分なコンマがあるようです SET
句。 前のコンマを削除 WHERE
補足として、パスワードをプレーンテキストとして保存することは非常に悪い考えです。 パスワードを安全に保つために、一方向ハッシュを使用する必要があります。 見て パスワードの保管: 方法。[^]
解決策 2
$query = "UPDATE users SET username = '$username', password = '$password' WHERE id = '$id' ";
あなたの質問に対する解決策ではありませんが、別の問題があります。
文字列を連結して SQL クエリを作成しないでください。 遅かれ早かれ、ユーザー入力でそれを行うことになります。これにより、「SQL インジェクション」と呼ばれる脆弱性への扉が開かれます。これは、データベースにとって危険であり、エラーが発生しやすいものです。
名前に一重引用符があると、プログラムがクラッシュします。 ユーザーが「Brian O’Conner」のような名前を入力すると、アプリがクラッシュする可能性があります。これは SQL インジェクションの脆弱性であり、クラッシュは問題の中で最も少なく、悪意のあるユーザー入力であり、すべての資格情報を含む SQL コマンドに昇格されます。
SQL インジェクション – ウィキペディア[^]
SQL インジェクション[^]
例による SQL インジェクション攻撃[^]
PHP: SQL インジェクション – マニュアル[^]
SQL インジェクション防止チート シート – OWASP[^]
専門用語なしで SQL インジェクションを説明するにはどうすればよいですか? – 情報セキュリティ スタック交換[^]
解決策 32
これを使っていました
SELECT * FROM `easyislam`.`hadithView` WHERE hadithNum LIKE ‘%アッラーのインスピレーション%’
私の場合、クエリが検索するテキストに ‘ を取得するとクラッシュするため、修正するには使用します
SELECT * FROM `easyislam`.`hadithView` WHERE hadithNum LIKE ‘%アッラーへのインスピレーション%’
SO 解決策は \ を追加して ‘ を扱うことです。 上記の abc のように使用します。
[ad_2]
コメント