2013-11-24 45 views
-3

这里是我的MySQL代码和相应的PDO的代码,我需要知道什么是错我如何实现更新我为下面的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) 
+0

@YourCommonSense帮助 – user3027853

+0

没有伤害你应该是具体的 – Nizam

+0

描述你的问题。没有人会免费检查你的代码) –

回答

-1

这个怎么样。我不知道$ _POST ['id']是什么,所以你必须找出你自己的其余部分。它使用$ 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']; 
} 

这些都是非常基础的,如果你不明白这里发生了什么,你应该学到更多。

+0

非常感谢你 – user3027853

+0

即时获取此错误解析错误:语法错误,在第38行的C:\ wamp \ www \ yumyum \ reserve.php中出现意外的''(T_ENCAPSED_AND_WHITESPACE),期待标识符(T_STRING)或变量(T_VARIABLE)或编号(T_NUM_STRING) – user3027853

+0

我几分钟前更新了我的答案, “ – Jompper