1
使用最新的php爲了創建一個函數,添加一行到表用戶。爲什麼bindValue或BindParam不會修改準備好的語句?
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)
我得到相同的結果。 實際執行的查詢仍然有?,?
而不是實際變量。
實際上,當查詢被修復且沒有多餘的雙引號時,綁定函數不起作用。 – ufk 2010-09-02 13:43:16
韋爾普,但我想這是一個不同的問題。 – ufk 2010-09-02 14:08:19