【解決方法】 SQL 構文にエラーがあります。 あなたのmariadbサーバーに対応するマニュアルを確認してください


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

SQL
$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 のように使用します。

コメント

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