comment obtenir se code en pdo

Par Kevin Kombetto, il y a 10 ans


Base de données MySQL

comment obtenir se code en pdo ?

function verification_passe($passe)
{
$passe = mysql_real_escape_string(htmlspecialchars(trim($_POST['passe'])));
$query = mysql_query("SELECT passe FROM administration
WHERE passe='$passe'");
$rows = mysql_num_rows($query);
return $rows;

}

8 réponses

briceeeee, il y a 10 ans

-> Tutoriel

<?php
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
}
catch (Exception $e)
{
    die('Erreur : ' . $e->getMessage());
}
?>

-> Recherche Grafikart

$sql = $bdd->query('SELECT ...');
$etat = $sql->rowCount();

Et on doit être pas trop mal de mon point de vue :)

Silvère stOne, il y a 10 ans
//on peut faire plus court mais optons pour ce code pour une meilleure approche de PDO $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); $donnees = array('passe'=>$_POST['passe']); $requete = "SELECT passe FROM administration WHERE passe = :passe"; $requete_preparee = $bdd->prepare($requete); $requete_preparee->execute($donnees); return $requete_preparee->rowCount();
Huggy, il y a 10 ans

Attention rowCount() ne fonctionne qu'avec les requêtes INSERT, UPDATE, DELETE mais pas avec SELECT
il faut faire

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); $requete = "SELECT passe FROM administration WHERE passe = :pwd"; $stmt->prepare($requete); $stmt->execute( array(':pwd' => $passe)); $rows = $stmt->fetchAll(); $num_rows = count($rows);
Kevin Kombetto, il y a 10 ans

merci a tous paur vos reponse rapite. ca mache!!!!!!!!!!!!

Kevin Kombetto, il y a 10 ans

j'aimerai savoir s'il est possible de metre le suivant dans un autre fichier pour eviter a chaque requet de l'ecrir?

<?php
try{
$bdd = new PDO('mysql:host=localhost;dbname=ceg;charset=utf8', 'root', '');
}catch (PDOexception $e){
echo "Une erreur de connection a la base de donne";
}
?>

Kevin Kombetto, il y a 10 ans

ma page index contien des fonctions qui gere l'affichage de mes page qui sont tous engegistrees dans un docier pages. c'est au debut du fichier index que j'ai: include('includes/connect-bd.php'); le ficher connect-bd.php conntient le code de connection a la base de donnee system PDO. quand je renplace include('includes/connect-bd.php') par sql => include('includes/connect-bd.php'); ca ne marche pas.

fichier index.php

<?php include('includes/connect-bd.php'); $page = htmlentities($_GET['page']); include('functions/'.$page.'.func.php'); $pages = scandir('pages'); if(!empty($page)&& in_array($_GET['page'].".php",$pages)) { $content = 'pages/'.$_GET['page'].".php"; }else { header("Location:index.php?page=acceuil"); } ?> <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="content"> <?php include($content); ?> </div> </body> </html>

fichier connect-bd

<?php session_start(); try{ $bdd = new PDO('mysql:host=localhost;dbname=ceg;charset=utf8', 'root', ''); }catch (PDOexception $e){ echo "Une erreur de connection a la base de donne"; } ?>
Silvère stOne, il y a 10 ans

@Huggy t'as essayé au moins avant ? Parce que chez moi, ça fonction très bien. De plus mysql_num_rows() ne fait exception à ton exception.
Et à regarder de près, connaitre le nombre d'éventuels enregistrements déjà effectués à priori serait plus utile [...]

Huggy, il y a 10 ans

@Silvère stOne, en effet ça fonctionne mais la doc dit que pour la plupart des bases ça ne fonctionne pas pour les requêtes Select
j'ai essayé en MyIsam, Innodb et ça marche, c'est le principal
merci d'avoir corrigé

Edit ; fonctionne avec Postgres mais pas MS SQL ni ODBC , dans ces 2 cas le pilote renvoie -1