我有以下数据

$field  = 'f1','f2','f3'; // (comma separated string)
$value = 'v1','v2','v3'; // (comma separated string)

是否有任何快捷方式可以生成这样的更新查询。

UPDATE table set ($field = $value) where id =1;

此方法适用于插入查询,但我不知道如何使用这种更新查询。

===============>>#1 票数:5 已采纳

我认为处理此类问题的最佳方法是将数据存储在关联数组中,而不是像以前使用的字符串中那样存储:

$data = array(
  'f1' => 'v1',
  'f2' => 'v2',
  'f3' => 'v3'
);

// Then for an insert:
$query = "INSERT INTO table (`".implode("`, `", array_keys($data))."`) VALUES ('".implode("', '", array_values($data))."')";

// And an update
$updates = array();
foreach ($data as $key => val) $updates[] = "`$key` = '$val'";
$query = "UPDATE table SET ".implode(', ',$updates)." WHERE `id` = 1";

// Or even a select
$where = array();
foreach ($data as $key => val) $where[] = "`$key` = '$val'";
$query = "SELECT * FROM table WHERE ".implode(' AND ',$where);

如果这样做,则需要确保在构建阵列时转义数据。 或者更好的方法是使用准备好的语句

===============>>#2 票数:3

更新语法是将更新表设置为field1 = value1,field2 = value2,因此您将没有字段列表,之后没有值列表(也可以这样使用insert,但不能这样使用)

所以您需要一个更高级的解决方案..例如制作这两个变量数组(也许使用爆炸),迭代这些数组并逐行创建行

===============>>#3 票数:1

这样,但您需要使自己的价值观更安全:

$field  = 'f1,f2,f3'; // (comma separated string)
$value = 'v1,v2,v3'; // (comma separated string)



    $fieldArr = explode(",", $field);
    $valArr = explode(",", $value);
    $d = array_map("make_it", $fieldArr, $valArr);

    function make_it($a, $b) {
      return $a.'='.$b;
    }
    $up = "UPDATE table set ";
    foreach($d as $key => $val) {
        $up .=$val.',';
    }
  $up = rtrim($up, ',');
  echo $up .=' where id =1;'

  ask by Satheesh Narayanan translate from so

未解决问题?本站智能推荐:

3回复

在逗号分隔的字符串mysql中查找值

我的数据库中有一个表,如下所示: 我需要创建一个SELECT语句,该语句在'mgroup_others'逗号分隔列表中指定整数的位置选择所有成员。 因此,例如,我编写了一条SQL语句,该语句将选择'mgroup_others'包含'10'的所有成员,并且它将返回成员1、2和3但不返回成
3回复

在字段PHP mysql查询中检查逗号分隔值

我在一个名为filter的表中有一个字段,它可以有逗号分隔的值1,2,3或3,1或更大,我只需要选择与字段中的这些记录匹配的那些记录,假设有人发送1,3并且必须存在于过滤器领域,即和操作。 我正在使用FIND_IN_SET并且对于单个值工作正常,假设有人发送1并且正在获取正确的记录,但是如
1回复

PHP从数据库中导出值,以逗号分隔,字符串中

这些表如下所示: 此功能按原样正常工作。 这是将调用函数并从数据库中获取数据的代码,并尝试用逗号分隔所需的值。 问题似乎在这段代码中的某个地方,但我不知道在哪里...任何帮助将不胜感激! 提前致谢!
2回复

查询包含逗号分隔字符串的列

我在使用sql查询时遇到问题。 基本上我有这种方法: 它创建如下查询: 问题是presenters列存储逗号分隔的值,因此实际上看起来像这样 因此,对于c.presenters于此列中未c.presenters任何第一值的任何query ,都不会返回任何结果。 我想知
3回复

在mysql中附加用逗号分隔的字符串时出现语法错误

我有以下查询 但是我出错了 'FL附近有什么语法错误? 不是那个查询 完美地工作。
1回复

查找用字符串输入的MySQL列中的逗号分隔值[重复]

这个问题已经在这里有答案 : 6个月前关闭。 MySQL find_in_set与多个搜索字符串 (5个答案) 我有一个包含列区域的表。 它可能有也可
2回复

MySQL查询不接受PHP中char(32)字段的字符串

我试图用一个简单的where子句在一个表上做一个简单的选择。 基本上: 当我尝试执行查询时,出现错误 您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以在第128行的''附近使用正确的语法 如果我将$id缩短1个字符,则可以使用,或者如果我尝试查询
2回复

MySQL Like查询中的PHP字符串变量

因此,我尝试使用一个PHP变量并将其插入到简单的sql查询中,但是它无法正常工作,而且我似乎无法弄清问题所在。 注意:我知道此代码存在安全问题 staff_model.php文件: 我的表有几列,但有ID,名称,主题,类型等列。 我获得$ searchterm的方式类似于
1回复

在逗号分隔的字符串mysql中选择值

这是我已经思考了几个小时,但仍然无法得到答案的东西。 因此,我有一个名为“ orders”的mysql表 当包含列中有一个数字时,我想选择一行。 例如,我已经尝试过: 但是问题在于它同时选择了第2行和第3行,因为数字“ 11”包含“ 1”。 我需要两个查询:何时
2回复

如何从MySQL将以逗号分隔的字符串值转换为整数

我正在一个php项目中从mysql检索数据。 我有一个代码列表,这些代码存储为另一个表中引用的逗号分隔的字符串。 有没有办法从字符串中获取所有值并返回其引用的文本? 例如,item_purchased可能包含一个或多个一个item_code。 我希望查询返回项目名称而不是项目代码。