comment puis-je mettre en œuvre la mise à jour i pdo pour le code mysql suivant?

voici mon code MySQL et le code pdo équivalent j'ai besoin de savoir ce qui ne va pas

$id = $_POST['id'];


    $query1=mysql_query("SELECT Quantity,id FROM `yumyum`.`food` where  `food`.`id` LIKE $id");
    $r = array();

    while($r = mysql_fetch_assoc($query1)) {

        $output = $r['Quantity'];


            echo $output;
            $query2=mysql_query("UPDATE food SET Quantity = Quantity - 1 where  `food`.`id` LIKE ".$r["id"]);

Code AOP

$stmt = $db->prepare("SELECT * FROM yuymuym WHERE id=:id AND Quantity=:Quantity");
$stmt->execute(array($id, $Quantity));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC)
0
comment puis-je mettre en œuvre la mise à jour i pdo pour le code MySQL suivant?
ajouté l'auteur user3027853, source
@u_mulder question modifiée pour être plus spécifique
ajouté l'auteur user3027853, source
@YourCommonSense pas de mal à aider
ajouté l'auteur user3027853, source
ajouté l'auteur Pekka 웃, source
Décrivez votre problème. Personne ne va examiner votre code gratuitement)
ajouté l'auteur u_mulder, source
Vous devriez être spécifique
ajouté l'auteur Nizam, source

1 Réponses

$db = new PDO('mysql:host=localhost;dbname=yumyum', 'username_here', 'password_here');
$ids = array(1,2,3,4,5);
foreach($ids as $id){
    $stmt = $db->prepare("SELECT Quantity, id FROM `food` WHERE `food`.`id` = :id");
    $stmt->bindParam(':id', $id);
    $stmt->execute();
    $row = $stmt->fetch();
    if($row){
        //uncomment to see $row content
        //var_dump($row);
        $rowId = (int)$row['id'];
        $rowQuantity = (int)$row['Quantity'];
        echo $rowQuantity;
        $ustmt = $db->prepare("UPDATE `food` SET `Quantity` = `Quantity` - 1 WHERE `food`.`id` = :id");
        $ustmt->bindParam(':id',$rowId);
        $ustmt->execute();
    }else{
        var_dump($stmt->errorInfo());
    }
}
$id = (int)$_POST['id'];
$else = $_POST['string'];

// Connect to database
$db = new PDO('mysql:host=HOST_HERE;dbname=DATABASENAME_HERE', 'USERNAME_HERE', 'PASSWORD_HERE');

// First we prepare our query
$stmt = $db->prepare("... WHERE `id` = :id AND `something` = :else");

// We bind values to our prepared query
$stmt->bindParam(':id',$id);
$stmt->bindParam(':else',$else);

// We execute our query
$success = $stmt->execute();

// If we want to fetch only one row:
$row = $stmt->fetch();
echo $row['id'];

// If we want to fetch all rows:
$rows = $stmt->fetchAll();
foreach($rows as $row){
    echo $row['id'];
}
0
ajouté
@JoniSalmi merci: D comment puis-je récupérer certaines lignes sélectionnées
ajouté l'auteur user3027853, source
Merci beaucoup
ajouté l'auteur user3027853, source
Erreur d'analyse: erreur de syntaxe, erreur inattendue '' (T_ENCAPSED_AND_WHITESPACE), identifiant attendu (T_STRING) ou variable (T_VARIABLE) ou numéro (T_NUM_STRING) dans C: \ wamp \ www \ yumyum \ reserve.php à la ligne 38
ajouté l'auteur user3027853, source
@JoniSalmi s'il vous plaît donnez-lui un essai de plus
ajouté l'auteur user3027853, source
Merci beaucoup il essaie
ajouté l'auteur user3027853, source
J'obtiens quelques erreurs de plus
ajouté l'auteur user3027853, source
ok maintenant pas d'erors mais la mise à jour n'a pas lieu
ajouté l'auteur user3027853, source
@JoniSalmi j'ai besoin de mettre à jour plusieurs lignes. Les quantités de plusieurs rangées
ajouté l'auteur user3027853, source
Donnez un poisson à l'homme - et il viendra un autre jour.
ajouté l'auteur Your Common Sense, source
Et si vous ne l'obtenez toujours pas, collez la ligne d'erreur et la ligne avant cela ici.
ajouté l'auteur Jompper, source
Le code lui-même n'a pas beaucoup de sens. Mettez-vous à jour un seul produit à la fois. Parce que maintenant il devrait boucler toutes les lignes cette "Quantité de SELECT, identifiant FROM yumyum . nourriture OERE nourriture . id =: id "retourne la requête. Et à cause de id = je crois, cela renvoie seulement une ligne. Peut-être pourriez-vous expliquer davantage ce que vous voulez accomplir.
ajouté l'auteur Jompper, source
J'ai mis à jour ma réponse il y a quelques minutes, il manquait la fin "
ajouté l'auteur Jompper, source