$prep->bindValue(1, $PARAM_nom_bd1.'.users.id1', PDO::PARAM_STR);
$x = $PARAM_nom_bd1.'.users.';
$query = 'SELECT * FROM '.$PARAM_nom_bd.'.admin, '.$PARAM_nom_bd1.'.users WHERE '.$PARAM_nom_bd.'.admin.id = '.$x.'?';
echo $query.'<br />';
$prep = $connexion->prepare($query);
$prep->bindValue(1, 'id1', PDO::PARAM_INT);
$prep->execute();
je recois cette erreur:ligne42:Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id1'' at line 1 in pdo2databases.php on line 42
$prep->execute();
j'ai mis le ?, je l'ai mis en 2 exemples:si tu veux mettre des paramètres en préparer il faut utilise le caractère ?
je te conseil d'aller voir des tutos sur PDO, et les requêtes préparées, si t'es pas a l'aise avec ca, utilise juste query
$query = 'SELECT * FROM '.$PARAM_nom_bd.'.admin, '.$PARAM_nom_bd1.'.users WHERE '.$PARAM_nom_bd.'.admin.id = ?';
$prep = $connexion->prepare($query);
$prep->bindValue(1, $PARAM_nom_bd1.'.users.id1', PDO::PARAM_INT);
2eme exemple: en deffinissant une variable "x" pour les donnees (BDD et table) et pour le ? serait id1:
$x = $PARAM_nom_bd1.'.users.';
$query = 'SELECT * FROM '.$PARAM_nom_bd.'.admin, '.$PARAM_nom_bd1.'.users WHERE '.$PARAM_nom_bd.'.admin.id = '.$x.'?';
$prep = $connexion->prepare($query);
$prep->bindValue(1, 'id1', PDO::PARAM_INT);
$query = 'SELECT * FROM '.$PARAM_nom_bd.'.admin, '.$PARAM_nom_bd1.'.users WHERE '.$PARAM_nom_bd.'.admin.id = ?';
echo $query.'<br />';
$prep = $connexion->prepare($query);
$prep->bindValue(1, 1, PDO::PARAM_INT);
soit: "$PARAM_nom_bd1.'.users.id1'" est ega a 1
SELECT * FROM tests.admin, test.users WHERE tests.admin.id = test.users.id1
Showing rows 0 - 0 (1 total, Query took 0.0330 sec)
et meme avec du php et SQL sans mettre bindValue:$query = 'SELECT * FROM '.$PARAM_nom_bd.'.admin, '.$PARAM_nom_bd1.'.users WHERE '.$PARAM_nom_bd.'.admin.id = '.$PARAM_nom_bd1.'.users.id1';
SELECT * FROM tests.admin inner join test.user on tests.admin.id = test.users.id1
au passage c'est deux bases tests et test ? c'est assez moyen comme nom, en général mais en particulier deux pareils on pige pas ton truc (si j'avais vu le s au dernier moyen j'aurais râlé sur le fait que tu confond base et table alors j'ai entendu parle que bindValue sert a proteger les donnees en mettant un ? dans la requete et en l'appelant avec bindValue, est ce correcte? sinon c'est quoi le role principal de bindValue??ahhh ben wé dans ce cas pas besoin de bindvalue d'ailleur c'est une jointure que tu fait la.