如何为以下mysql代码实现updateipdo


how do i implement update i pdo for the following mysql code?

这是我的mysql代码和等效的pdo代码,我需要知道出了什么问题

$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"]);

PDO代码

$stmt = $db->prepare("SELECT * FROM yuymuym WHERE id=:id AND Quantity=:Quantity");
$stmt->execute(array($id, $Quantity));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC)

这个怎么样。我不知道$_POST是什么,所以你必须自己计算其余的。它更新$ids数组中每个id为的项。因此,这将更新id为1,2,3,4和5的项目。

$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());
    }
}

但是PDO的基础:

查询(适用于选择、插入、更新等):

$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'];
}

这些都是非常基本的,如果你不了解这里到底发生了什么,你应该学习更多。