使用最新的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)
我得到的结果相同。
实际执行的查询中仍然包含?,?
而不是实际变量。
答案 0 :(得分: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;
来停止它。