PHP MYSQL 使用 JSON 提供的内容构建动态 UPDATE 查询

标签 php mysql json

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/

相关文章:

json - 使用 VSTS Rest API,如何更新 Markdown 小部件?

php - 如何检索不同 php-html 页面上同一个表的最后插入的自动生成的 id

php - php 的表单问题。动态选择的选项和复选框

php - 如何在 yii 中设置命令超时?

mysql - 计算 2(非连续)行之间的时间差

javascript - 如何从 JS 或 Mootools 中的表单获取数组并将其发送到 PHP?

java - Xml转JSon,字符问题

php - 内连接 MYSQL 查询组合 3 个表

Php递归数组计数

PHP 表单弹出确认请求