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

您对数据进行两次编码,一次是手动的,一次是通过将它们提供给准备好的语句。只需对其进行一次编码,例如:

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

顺便说一句,除非您真的想编写特定于 MySQL 的代码,否则没有理由再使用 mysqli。PDO模块支持开箱即用的多个数据库,具有类似的界面。

于 2012-07-19T10:54:33.227 回答