将INSERT序列转换为UPDATE序列

时间:2015-02-21 14:41:33

标签: sql pdo syntax insert sequence

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

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

我想用相同的字段做一个UPDATE序列。问题是我有150个字段和大约3或4个不同的序列,所以如果我手动更新语法可能需要花费很多时间和很多错误,是否有任何“自动”方式来转换它?

非常感谢

1 个答案:

答案 0 :(得分:0)

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

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查询 - 请记住这当前是安全的,因此请在提交到数据库之前花一些时间对变量进行正确的清理!

希望这有帮助。