2

使用最新的 php 来创建一个向表用户添加行的函数。

class targil_db {

    private $_pdo;

    public function __construct() {
        // username: root password: <blank> database: targil
        $this->_pdo = new PDO(
                    'mysql:host=127.0.0.1;dbname=targil',
                    'root',
                    ''
                    );
    }

function addUser($username, $password) {

    $md5password = md5($password);
    $sql = <<<SQL
        "INSERT INTO user (username,password) VALUES (:username,:password)"
SQL;

    $stmt = $this->_pdo->prepare($sql);
    $stmt->bindValue(':username', $username,PDO::PARAM_STR);
    $stmt->bindValue(':password', $password,PDO::PARAM_STR);
    $stmt->execute();
}

}

当我执行 addUser 函数时,这是我看到在 mysql 日志文件上执行的查询:

INSERT INTO user (username,password) VALUES (:username,:password)

如您所见,它没有将 :varname 替换为正确的值。我错过了什么?

我尝试了 bindValue 和 bindParam,但得到了相同的结果。

更新

即使我改变:username:password使用,?,?我 得到相同的结果。实际执行的查询仍然包含在其中,而不是实际变量。bindValue(1,$username)bindValue(2,$password)?,?

4

1 回答 1

1

这个:

 $sql = <<<SQL
    "INSERT INTO user (username,password) VALUES (:username,:password)"
SQL;

应该:

$sql = <<<SQL
    INSERT INTO user (username,password) VALUES (:username,:password)
SQL;

我需要删除双引号,我已经习惯<<<SQL了启动字符串并SQL;停止它。

于 2010-08-29T13:07:08.973 回答