PHP
$postdata = json_decode(file_get_contents("php://input"));
$src = $postdata->data;
print_R( $src );
打印出上面的内容
stdClass Object
(
[id] => 1
[first] => Joe
[middle] => Cornelius
[last] => Bloggs
)
但是我想要做的是构建一个动态的 UPDATE MySQL 查询,以便数据输入可能类似于以下内容:
stdClass Object
(
[id] => 1
[first] => Joe
[middle] =>
[last] => Bloggs
)
然后 MySQL 查询将错过更新中的middle
。 MySQL 表行排列在数组的 id
中。
我尝试过这样做,但我能想到的只是一个 if 语句来查看是否有值,但那不是循环。
我希望有人能想出一种更简单的方法。
最佳答案
类似这样的吗?
$src = (array) $src;
$sets = array();
$valid_fields = array('first','middle','last');
foreach( $valid_fields as $valid_field )
{
if(!empty($src[ $valid_field ]))
{
$safe_data = some_type_of_validation( $src[ $valid_field ]); // addslashes? mysql_real_escape_string?
$sets[] = "{$valid_field} = '{$safe_data}'";
}
}
if(!empty($sets))
{
$set_clause = implode(',',$sets);
$sql = "UPDATE table SET {$set_clause} WHERE id = {$id}";
}
请注意,这不允许您将值设置为空字符串,因此,例如,如果有人确实想将其中间名设置为“”,则这是行不通的。
关于PHP MYSQL 使用 JSON 提供的内容构建动态 UPDATE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533509/