=記号の後にhtml形式のPOSTデータが表示されるようにするにはどうすればよいですか?PHPを使用してSQLデータベースをフォームデータで更新するにはどうすればよいですか?
$tsql = "UPDATE dbo.[order]
SET status=''
WHERE order_ID='' ";
=記号の後にhtml形式のPOSTデータが表示されるようにするにはどうすればよいですか?PHPを使用してSQLデータベースをフォームデータで更新するにはどうすればよいですか?
$tsql = "UPDATE dbo.[order]
SET status=''
WHERE order_ID='' ";
すべてのPOSTデータが$_POST
に保存されているが$ _POST [ 'dataname']を置きます。
SET status='".$_POST['dataname']."'
が適切に置き換えられます。
このように? $ _ POST ['status']。 "'; $ _ POST [' order_ID ']。"' "; $ tsql =" UPDATE dbo。[order] \t SETステータス= '"。 –
これらがHTMLのフィールドの場合は、「はい」 – Forbs
ありがとうForbs。これはうまくいった。それはちょっとした従業員のイントラネットプロジェクトなので、私はそれを衛生的にする必要はないと感じました。 –
POSTデータは、次のように$ _POST suberglobalを使用して取得することができます。
.... " SET status = '{$_POST['form_field_name']}'";
しかし、私は可能な限り、このために準備されたステートメントを使用することをお勧めします。フォーム・データを直接SQL文に入れるのは悪い習慣であり、セキュリティ上の問題を引き起こす可能性があります。
あなたはこのように準備されたステートメントを使用する必要があります。
// Store the form data in variables
$status = $_POST['status_field'];
$order_ID = $_POST['order_ID_field'];
// If you're not going to use prepared statements AT LEAST do this
// Not a necessary step if using prepared statements
$sanitized_status = mysqli_real_escape_string($dbConnection, $status);
$sanitized_order_ID = mysqli_real_escape_string($dbConnection, $order_ID);
// Prepare the SQL
// When script is run database will compile this statement first
$stmt = $dbConnection->prepare('UPDATE table_name SET status = ? WHERE order_ID = ?');
// Parameters are bound to the COMPILED statement not the string
$stmt->bind_param('si', $sanitized_status, $sanitized_order_ID);
$stmt->execute();
キーはコンパイル文ではなく、SQLの文字列自体にフォームデータをバインドすることです。準備された声明についての詳細は、以下のこの優れた資料をご覧ください!
は、おそらく、基本的なPHPを学ぶのか? http://php.net/manual/ja/tutorial.forms.php –
注意してください。 http://php.net/manual/en/security.database.sql-injection.php – pnovotnak
......おそらく素晴らしい言葉です。 –