ご覧のとおり、変数を挿入するクエリがあります。 構文に何が問題なのですか?MySQLクエリで変数を挿入する
$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;
ご覧のとおり、変数を挿入するクエリがあります。 構文に何が問題なのですか?MySQLクエリで変数を挿入する
$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;
変数の文字列はありますか? MySQLクエリの目的のために引用符で囲みたいと思うでしょう。
また、$ newtitleの後に連結演算子(ピリオド)がありません。
あなたは$クエリの値をエコーした場合、エラーが表示されるはずです。
UPDATE house SET epname=[value of newtitle] WHERE epid= [value of $epid]
はそのepnameを仮定がchar/varchar型の値であり、かつEPIDはある種の整数であり、あなたはおそらくしたいですこの操作を行います。
$query = "UPDATE house SET epname = '" . mysql_real_escape_string($newtitle) . "' WHERE epid= " . $epid;
あなたは、文字列の周りにmysql_escape_string機能を使用しない場合は、SQLインジェクション攻撃に対して脆弱である
$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;
$query = "UPDATE house SET epname=".$newtitle." WHERE epid= ".$epid;
またはより良い
$query = "UPDATE house SET epname= $newtitle WHERE epid= $epid";
注入に関する警告やエスケープやプリペアドステートメントを使用しないで、このアプローチは、Stackoverflowの答えではありません。 – Konerak
彼は彼のコードをどうやって間違っているか尋ねました。たぶん私はまた、あなたがこの正しいと考えるためにMySQLの注入やxssについて話す必要がありますが、実際には私の答えはそのような質問の正確な返信です。 – Spyros
@ SpyrosP-ありがとう! @ Konerak-私は自分のコードを確実にすることの重要性を理解していますが、私が今やっていることのためには、学習していなくても十分です。しかし、私はいくつかの深刻な開発に入る前にセキュリティについて学ぶことを考慮に入れます。 – t0mgs
あるべき基本的な構文エラーは、次のとおりです。
…e=".$newtitle" W…
^^
あなたたちの場合SQL文を作成するために文字列を一緒にバッシングする方法を説明します。次に、二重引用符が補間されるという事実を利用する必要があります。これにより、はるかに読みやすいコードになります。
$query = "UPDATE house SET epname=$newtitle WHERE epid=$epid";
しかし文字列バッシングのアプローチが欠陥があります。 prepared statements(好ましくはPDOを使用)を使用すると、SQLインジェクションの脆弱性を作成するのが難しくなり、(おそらく)読みやすくなります。
こんにちはデビッド - ありがとう、それを確認してください。PDOとPEAR-> DBの違いについて簡単に説明できますか? – t0mgs
初心者によくある間違いには、 '「UPDATE家のような文字列を引用符で囲む必要がありますSET epname = '"。$ newtitle。"'どこのepid = "。(int)$ epid;'、もちろんそれをエスケープする必要があります – ajreal
@ ajreal-Thanks!そして再びあなたは救助に来る:) – t0mgs
最後に、PHPとmysqlの2つの構文エラーがあることを理解しましたか? –