【问题标题】:How to update records in pdo如何更新 pdo 中的记录
【发布时间】:2015-10-05 12:26:03
【问题描述】:

更新:这不是 "Invalid parameter number: parameter was not defined" Inserting data 这个问题是指Yii框架,发问者使用了错误的变量,他说这个问题可能应该被删除,因为这个问题一般不在于PDO。这是一个不同的问题。

我的 CMS 的此代码旨在更新每个产品已存在的产品信息。目前,当我更新信息时,我返回同一页面并收到此错误,并且每个尝试更新的产品都会回显信息...

总数:5,优先级:1,标签:服装,价值:衬衫,可见性:true,ID:34

“更新产品属性设置优先级=:优先级,标签=:标签, 价值=:价值,single_line =:single_line WHERE product_id = :product_id "

SQLSTATE[HY093]:参数号无效:参数未定义

$id = $_GET['id'];
for($i = 0; $i < $totalProducts; $i++){
    if(!empty($_POST)){
        try {
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "UPDATE product_attributes SET priority = :priority,
                                                                label = :label,
                                                                value = :value,
                                                                visible = :visible 
                                                     WHERE product_id = :product_id";
            //Prepare Statement
            $query = $pdo->prepare($sql);
            $query->bindValue(' :priority ', $_POST['priority' . $i]);
            $query->bindValue(' :label ', $_POST['label' . $i]);
            $query->bindValue(' :value ', $_POST['value' . $i]);
            $query->bindValue(' :visible ', $_POST['visible'  . $i]);
            $query->bindValue(' :product_id ', $id);

            //Execute the query
            $query->execute();  

            // echo a message to say the UPDATE succeeded
            echo $query->rowCount() . " records UPDATED successfully";
        }
        catch(PDOException $e)
        {
            echo "<br>Priority:" . $_POST['priority' . $i] . "<br>";//currently echoes "1"
            echo "<br>Label:" . $_POST['label' . $i] . "<br>";//currently echoes "clothing"
            echo "<br>Value:" . $_POST['value' . $i] . "<br>";//currently echoes "shirt"
            echo "<br>Visible:" . $_POST['visible' . $i] . "//<br>";//echoes "true"
            echo "<br>ID:" . $id . "<br>";//currently echoes "34"

            echo '"' . $sql . " \"<br>" . $e->getMessage() . "<br>";
        }
    }
}

但是,我有相同数量的绑定值和正在更新的 SQL 字段。我一直在搜索其他已回答的问题,但没有一个能解决我的问题。为什么说没有定义参数?

【问题讨论】:

    标签: php sql pdo content-management-system sql-update


    【解决方案1】:

    字符串

    ' :priority '
    

    在参数名称周围有两个额外的空格。

    【讨论】:

    • 就是这样!出于某种原因,我的工作所依据的示例似乎有它们。
    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多