将 INSERT 序列转换为 UPDATE 序列

Convert INSERT sequence into UPDATE sequence

我在 PDO 中有一个 SQL INSERT 序列,例如:

INSERT INTO property (id,name,addres...) VALUES (:id,:name,:address...)

我想执行更新序列,具有相同的字段。问题是我有 150 个字段和大约 3 或 4 个不同的序列,所以如果我手动更新语法可能会花费很多时间和很多错误,是否有任何 "automatic" 转换方法是吗?

非常感谢

我这样做的方法是有一个函数,该函数基于数组中传递的键值对动态构建查询:

function updateTable($table, $values) 
{
    // Set the base query
    $query = 'UPDATE ' . $table;

    // Build the query with the key value pairs
    foreach($values as $key=>$data) {
        $query . ' SET ' . $key . ' = ' . $data . ' ';
    }

    // Execute your query here
    ...
}

显然你需要在循环的每次迭代中绑定你的 PDO 对象,但我想给你一个循环的基本布局来处理你想要实现的目标,然后你可以这样调用它:

updateTable('Products', { 'product_name' => 'Apple', 'product_price' => 100.00})

这将构建查询:

UPDATE Products SET product_name = 'Apple', product_price = 100.00

您可以轻松地扩展此查询以提供一个 WHERE 参数,以便您可以优化您的 UPDATE 查询 - 请记住这是目前不安全的,因此请花一些时间对变量进行适当的清理,然后再提交D B!

希望这对您有所帮助。