PHP:为可用的$\u POST变量创建SQL查询
我有一个$u POST变量:PHP:为可用的$\u POST变量创建SQL查询,php,mysql,post,Php,Mysql,Post,我有一个$u POST变量: Array ( [phone_1] => 3123213 [phone_2] => 432423 [phone_3] => 4234 [phone_4] => 6456456 [phone_5] => 7567576 [phone_6] => ) 现在我有了这个SQL语句: UPDATE table_name SET phone_1 = $_POST['phone1'], pho
Array
(
[phone_1] => 3123213
[phone_2] => 432423
[phone_3] => 4234
[phone_4] => 6456456
[phone_5] => 7567576
[phone_6] =>
)
现在我有了这个SQL语句:
UPDATE table_name SET phone_1 = $_POST['phone1'],
phone_2 = $_POST['phone2'],
phone_3 = $_POST['phone3'],
phone_4 = $_POST['phone4'],
phone_5 = $_POST['phone5'],
phone_6 = $_POST['phone6']
WHERE id=$id
我想要实现的是基于$\u POST变量动态构建SQL查询,并且只包含那些具有POST值的查询。因此,SQL语句应该是:
UPDATE table_name SET phone_1 = $_POST['phone1'],
phone_2 = $_POST['phone2'],
phone_3 = $_POST['phone3'],
phone_4 = $_POST['phone4'],
phone_5 = $_POST['phone5']
因为phone_6 post变量为空。是的,$\u POST键名称与表字段名称相同。蒂亚 您可以使用:
<?php
$update = "";
foreach($_POST as $key => $value) {
if(!empty($value)) {
$update .= $key. "='".$value."',";
}
}
$update = substr($update,0,-1);
$query = "UPDATE table_name SET ".$update." WHERE id=$id";
?>
通过使用内爆
和数组映射
您可以使用foreach语句循环$\u POST。遗憾的是,这不符合描述,尝试过后,它仍然在SQL语句中包含空的$\u POST变量-这是一种不错的方法,因为它没有使用循环。使用数组过滤器避免空值,请检查我的编辑。。
$postVar = array_filter($_POST);
$update = implode(', ', array_map(function($v, $k) { return $k."='".$v."'"; }, $postVar, array_keys($postVar)));
$query = "UPDATE table_name SET ".$update." WHERE id=$id";