php - 为什么数据库没有更新?

标签 php mysql pdo

我有这个PHP:

<?php 
    $db= new PDO("mysql:host=example;dbname=example", "root", "example");
    $query= $db->prepare("SELECT yarnName, price, sale_price, cost, contents, onSale, yarnLink, yarnImage, activeFlag FROM yarn WHERE yarnId = :parameter");
    $query->bindParam(':parameter', $id, PDO::PARAM_STR);
    $query->execute();
    $id=$_POST['id'];
    $name=$_POST['name'];
    $price=$_POST['price'];
    $salePrice=$_POST['salePrice'];
    $cost=$_POST['cost'];
    $contents=$_POST['contents'];
    $onSale=$_POST['onSale'];
    $yarnLink=$_POST['yarnLink'];
    $image=$_POST['image'];
    $active=$_POST['active'];
    $attrUpdates= array($name,$price,$salePrice,$cost,$contents,$onSale,$yarnLink,$image,$active);
    $attrOriginal=$query->fetch();
    if(count($attrUpdates)==count($attrOriginal)){
        for($i=0; $i<count($attrUpdates); $i++){
            if($attrUpdate[$i]!=$attrOriginal[$i]&&$attrUpdate[$i]!=null){
                switch($i){
                    case 0:
                        $update=$db->prepare("UPDATE yarn SET yarnName = :parameter1 WHERE yarnId = :parameter2");
                    case 1:
                        $update=$db->prepare("UPDATE yarn SET price = :parameter1 WHERE yarnId = :parameter2");
                    case 2:     
                        $update=$db->prepare("UPDATE yarn SET sale_price = :parameter1 WHERE yarnId = :parameter2");
                    case 3:
                        $update=$db->prepare("UPDATE yarn SET cost = :parameter1 WHERE yarnId = :parameter2");
                    case 4:
                        $update=$db->prepare("UPDATE yarn SET contents = :parameter1 WHERE yarnId = :parameter2");
                    case 5:
                        $update=$db->prepare("UPDATE yarn SET onSale = :parameter1 WHERE yarnId = :parameter2");
                    case 6:
                        $update=$db->prepare("UPDATE yarn SET yarnLink = :parameter1 WHERE yarnId = :parameter2");
                    case 7:
                        $update=$db->prepare("UPDATE yarn SET yarnImage = :parameter1 WHERE yarnId = :parameter2");
                    case 8:
                        $update=$db->prepare("UPDATE yarn SET activeFlag = :parameter1 WHERE yarnId = :parameter2");
                }
                $query->bindParam(':parameter1', $attrUpdate[$i], PDO::PARAM_STR);
                $query->bindParam(':parameter2', $id, PDO::PARAM_STR);
                $query->execute();
            }
        }
    }
?>

并且它没有更新数据库。我不确定为什么会这样,但如果有人告诉我出了什么问题,我将不胜感激。我不认为这篇文章出了问题,但也有可能。

最佳答案

$query 更改为 $update

$update->bindParam(':parameter1', $attrUpdate[$i], PDO::PARAM_STR);
$update->bindParam(':parameter2', $id, PDO::PARAM_STR);
$update->execute();

关于php - 为什么数据库没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371982/

相关文章:

javascript - 改为 JavaScript 的 array_count_values

php - WordPress:使用 get_current_user_id() 插入到我的 WPDB 表中

php - SQL从两个表中选择行,其中一列是公共(public)的,但另一列可能为空

不应该工作但返回所有表内容的 MySQL where 子句

mysql - SQL : How do I sum all null values into another value of specific row?

php - 从类中的函数获取具有特定内容的变量

php - laravel 集合复杂和/或表达式

php - Laravel 4.2 分页与复杂的数据库查询

java - SQL 语法错误,准备好的语句,无详细信息

php - 如何将一条信息插入到已有的记录中?