我在PDO中有一个SQL INSERT序列,如:
INSERT INTO property (id,name,addres...) VALUES (:id,:name,:address...)
我想用相同的字段做一个UPDATE序列。问题是我有150个字段和大约3或4个不同的序列,所以如果我手动更新语法可能需要花费很多时间和很多错误,是否有任何“自动”方式来转换它?
非常感谢
答案 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查询 - 请记住这当前是安全的,因此请在提交到数据库之前花一些时间对变量进行正确的清理!
希望这有帮助。