所以,我有一个数组,我正在组合创建一个INSERT
命令。 (还没有完成消毒,只是一个概念证明)。
$namedata
是"名称"的数据。字段(例如"此名称")
$refdata
是" Ref"的数据。字段(例如" 43857368")
$CatRefData
是我的数组(例如,' 23',' 45',' 2',' 144')
我的制定方法如下:
$inputdata = "'), ('".$namedata."', '".$refdata."', '";
$data = implode($inputdata, $CatRefData);
$result = "INSERT INTO `MyTable`('Name', 'Ref', 'Cat_Ref') VALUES ('".$data."')";
但输出结果是数组的第一个实例缺少任何额外的"非数组"数据,像这样:
$ result = INSERT INTO
MyTable
('姓名','参考',' Cat_Ref')价值观 (' 23'),('此名称',' 43857368',' 45'),('此名称' ;,' 43857368', ' 2'),('此名称',' 43857368',' 144')
你能看到 - 第一个例子,数组值是' 23',没有任何周围的信息。
我做错了什么?
答案 0 :(得分:1)
我会这样做......
$arr = array();
foreach($CatRefData as $d) {
$arr[] = "('".$namedata."', '".$refdata."', '".$d."')";
}
$data = implode(",",$arr);
但你应该做一些逃避...
答案 1 :(得分:1)
implode()
只会添加连接文字BETWEEN值,因此如果您有:
$arr = array('a', 'b', 'c');
$newarr = implode('foo', $arr);
你最终会得到
afoobfooc
但实际上你需要
fooafoobfooc
这意味着您必须首先使用“加入”文本“填充”您的查询:
$result = "INSERT INTO `MyTable`('Name', 'Ref', 'Cat_Ref') VALUES ('$inputData"
答案 2 :(得分:0)
我认为你不能只用内爆来做到这一点。
尝试将其与array_map()一起使用 ,像这样:
$CatRefData = [ '23', '45', '2', '144'];
function surrounding($n)
{
return "('something', '123', '".$n."')";
}
echo implode(", ",array_map("surrounding", $CatRefData));