【问题标题】:Pad array values with parentheses to perform insert用括号填充数组值以执行插入
【发布时间】:2015-12-08 19:21:51
【问题描述】:

我想将每个数组值放在一个括号内

$id   = $_POST['id'];
$test2 = array($id);
$id_list = implode(',', $test2);
$sql .= "INSERT INTO tmp (id) VALUES ({$id_list});";

例如:我正在执行插入,因此列表的输出应该是 (5),(10),(15) 而不是 '5','10','15'

关于如何使用数组插入有什么建议吗?

【问题讨论】:

标签: php mysql arrays mysqli


【解决方案1】:

MySQL 的扩展插入语法是

INSERT INTO sometable (...fields...) VALUES (value set #1), (value set #2), (value set #3), etc...

注意每个值集是如何在其自己的() 中的。你不这样做。您只是在 SINGLE () 集合中传递了一堆值,这意味着您正在为字段列表中不存在的字段提供值。

你需要做的

$id_list = '(' . implode('),(', $_POST['id']) . ')';

生产

(5),(10),(15)

而不是

(5, 10, 15)

您还需要意识到您很容易受到sql injection attacks 的攻击。

【讨论】:

  • 你给我的代码产生了输出 (5, 10, 15)。我无法在逗号之间插入括号
  • 那么$_POST['id']实际上是一个数组吗?例如您的表单包含多个<input name="id[]" ... /> 标签?因为执行array($_POST['id']) 不会神奇地将字符串拆分为多个值,以便您稍后再次内爆。您需要先explode() 字符串。
猜你喜欢
  • 1970-01-01
  • 2013-01-24
  • 2018-05-22
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 2021-09-20
  • 2022-08-18
  • 2020-02-28
相关资源
最近更新 更多