您好,我正在使用以下代码更新密码,但我需要选择我应该在我的 SQL 查询中更新哪些用户,如果我将数字作为 23 之类的 id 输入,则有一个 WHERE 子句它正在工作,但我希望这个 id 来自POST 方法也从表单中发布 id,这是此版本中的代码,它给了我一个错误:
`SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens`
这是这里的代码
<?php
class Users {
public $password = null;
public $salt = "Zo4rU5Z1YyKJAASY0PT6EUg7BBYdlEhPaNLuxAwU8lqu1ElzHv0Ri7EM6irpx5w";
public function __construct( $data = array() ) {
if( isset( $data['id'] ) ) $this->id = stripslashes( strip_tags( $data['id'] ) );
if( isset( $data['password'] ) ) $this->password = stripslashes( strip_tags( $data['password'] ) );
}
public function storeFormValues( $params ) {
//store the parameters
$this->__construct( $params );
}
public function register() {
$correct = false;
try {
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "Update users SET password = :password WHERE userID = :id";
$stmt = $con->prepare( $sql );
$stmt->bindValue( "password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR );
$stmt->execute();
return "Registration Successful <br/> <a href='index.php'>Login Now</a>";
}catch( PDOException $e ) {
return $e->getMessage();
}
}
}
?>
所以问题是如何把发布的 WHERE userID= :id;