mysqli->制备( '更新')

时间:2012-07-19 09:42:14

标签: php

这段代码好吗?因为我没有更新我的数据库,我没有错误。谢谢。

//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');

1 个答案:

答案 0 :(得分:1)

您可以将数据编码两次,一次手动,一次将它们提供给预先准备好的语句。只需编码一次,如:

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

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