Utiliser le dernier php pour créer une fonction qui ajoute une ligne à un utilisateur de table.Pourquoi bindValue ou BindParam ne modifie pas l'instruction préparée?
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();
}
}
quand j'exécute la fonction addUser, c'est la requête que je vois exécuté sur le fichier journal mysql:
INSERT INTO user (username,password) VALUES (:username,:password)
comme vous pouvez le voir ne pas remplacer le: varname dans la valeur correcte . qu'est-ce qui me manque?
J'ai essayé à la fois bindValue et bindParam mais j'ai obtenu les mêmes résultats.
mise à jour
même quand je change :username
et :password
-?,?
et j'utilise bindValue(1,$username)
et bindValue(2,$password)
i obtenir les mêmes résultats. la requête qui est exécutée a toujours ?,?
à la place des variables réelles.
En fait, avec des qeuries plus grandes lorsque la requête est corrigée et qu'il n'y a pas de guillemets doubles, les fonctions de liaison ne fonctionnent pas. – ufk
welp mais je suppose que c'est pour une question différente. – ufk