0

このコードは大丈夫ですか?データベースが更新されず、エラーも発生しないためです。ありがとうございました。

//connect to db

$email = $mysqli->real_escape_string($_POST['email']);
$bo = $mysqli->real_escape_string($_POST['bo']);
$p1 = $mysqli->real_escape_string($_POST['p1']);
$p2 = $mysqli->real_escape_string($_POST['p2']);
$dt = $mysqli->real_escape_string($_POST['dt']);

$dt = new DateTime("2012-07-01 13:13:13", new DateTimeZone('Europe/Paris'));

//more validation code...

$stmt = $mysqli->prepare('UPDATE table SET Password=?, R_P=?, R_T=? WHERE E_mail=?')
$stmt->bind_param("ssss", $p2, $p2, $dt, $email); 
$stmt->execute();
$stmt->close();

$mysqli->close();

//send email

すべてのページに常に追加するものをページに追加するのを忘れたため、エラーは発生しませんでした。

// check for errors
require_once('check_all_errors.php');
4

1 に答える 1

1

データを2回エンコードします。1つは手動で、もう1つはプリペアドステートメントにデータを提供することによってエンコードします。次のように、一度エンコードするだけです。

$stmt = $mysqli->prepare('UPDATE table SET Password=?');
$stmt->bind_param('s', $_POST['password']);

ちなみに、本当にMySQL固有のコードを書きたいのでなければ、mysqliを使用する理由はもうありません。PDOモジュールは、同様のインターフェイスを使用して、すぐに使用できる複数のデータベースをサポートします。

于 2012-07-19T10:54:33.227 に答える