html:
php:
phpの赤枠部分は、htmlのname="new_title_info"の値を取得する必要がありますが、これを一番下に $sql と書きました。挿入したステートメントを見てください。次の値が空であることがわかりました。図の修正方法は、$sql=".... 行にまだ問題があります。変更方法は次のとおりです。それは?
php:
phpの赤枠の部分は、htmlのname="new_title_info"の値を取得する必要がありますが、これを一番下に $sql と書きました。挿入したステートメントを見てください。次の値が空であることがわかりました。図の修正方法は、$sql=".... 行にまだ問題があります。変更方法は次のとおりです。それは?
リーリー
文字列を連結するにはピリオドを使用します。そうするのは安全ではありませんが。パラメータ化されたクエリを使用することをお勧めします
分けて書くのが簡単
$name = $_POST['new_title_info'];$class = $_POST['new_class_info'];
$sql = "テーブル(xxx,xxx)に値を挿入 ($name,$クラス) ";
ワークグループでコードレビューが必要な場合は、死ぬほど叱られるでしょう…
ユーザー入力変数は実際には SQL に直接挿入できません…
さらに…組み立てた SQL ステートメントを出力するだけで済みます。 . そして直接 ステートメントを取得してデータベースで実行するだけです...問題は一重引用符にあると視覚的に判断します
シングルクォーテーションにも問題があるような気がします
SQL ステートメントを出力し、形式が正しいかどうかを確認してください。それを mysql に入れて実行すると、問題が表示されます。
SQL インジェクションを防ぐために、受信したデータを処理してエスケープする必要があるため、単一引用符を使用して引用することをお勧めします。
"INSERT INTO table_name (columns) value({$_POST['key']})",
読みやすくするために中括弧で囲んでいます
余談ですが、すべてのユーザー入力はフィルタリングする必要があり、データベースに直接挿入しないでください
$_POST
是不起作用的。在PHP
里单引号是不会执行内部变量的,你改成双引号就可以了。这么多回答已有人提出这样容易被SQL
ところで!
SQL ステートメントを直接記述しないでください。安全ではありません。 SQLインジェクション攻撃を防ぐためには前処理などの対策が必要です。