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 に答える