我有以下问题: 我有不同的数组,每个数组都包含一个项目列表。 我尝试在数据库中插入,但每个列表的结果都是togheter。
这是我的代码: (我在项目之间使用preg_replace删除)
$codice = preg_replace('/(<br>)+$/', '', $_POST['jcitemcodice']);
$prodotto = preg_replace('/(<br>)+$/', '', $_POST['jcitemname']);
$quantita = preg_replace('/(<br>)+$/', '', $_POST['jcitemqty']);
$prezzo = preg_replace('/(<br>)+$/', '', $_POST['jcitemprezzo']);
$a1 = array("$codice","$prodotto","$quantita","$prezzo");
$res = implode("','" ,$a1);
$sql = "INSERT INTO test (codice,prodotto,quantita,prezzo) VALUES ('$res')";
mysql_query($sql);
查询结果是:
INSERT INTO test (codice,prodotto,quantita,prezzo) VALUES ('SUT03M SUT02M','Arrabbiata Albahaca','12 6','1.25 1.3')
但为了正确,我需要结果:
INSERT INTO test (codice,prodotto,quantita,prezzo) VALUES ('SUT03M','Arrabbiata','12','1.25'), VALUES ('SUT02M','Albahaca','6','1.3')
$codice contain: SUT03M SUT02M
$prodotto contain: Arrabbiata Albahaca
$quantita contain: 12 6
$prezzo contain: 1.25 1.3
我尝试了很多代码,但总是一样。
谢谢你。
答案 0 :(得分:0)
假设codice, prodotto, quantita, prezzo
不包含 _ (下划线)的值,您可以展开由它分隔的内容:
//Change existing tag with defined delimiter
$d = "_";//delimiter
$codice = preg_replace('#<[^>]+>#', $d, $_POST['jcitemcodice']);
$prodotto = preg_replace('#<[^>]+>#', $d, $_POST['jcitemname']);
$quantita = preg_replace('#<[^>]+>#', $d, $_POST['jcitemqty']);
$prezzo = preg_replace('#<[^>]+>#', $d, $_POST['jcitemprezzo']);
//replace space in quantita and in prezzo with the delimiter
$quantita = preg_replace(' ', $d, $quantita);
$prezzo = preg_replace(' ', $d, $prezzo);
//Separate data
$tCodice = explode($d, $codice);
$tProdotto = explode($d, $prodotto);
$tQuantita = explode($d, $quantita);
$tPrezzo = explode($d, $prezzo);
//Formulate values string
$values = "";
foreach($tCodice as $key => $_codice){
if($_codice > ""){
$a1 = array(trim($tCodice[$key]), trim($tProdotto[$key]), trim($tQuantita[$key]), trim($tPrezzo[$key]));
$res = implode("','" ,$a1);
if($values != ""){
$values .= ", ";
}
$values .= "('".$res."')";
}
}
$sql = "INSERT INTO test (codice,prodotto,quantita,prezzo) VALUES $values";
echo $sql;
请从$ _POST
中获取更多自定义数据答案 1 :(得分:0)
这是一个通用代码,无论你有多少变量,如果在字符串u中找不到匹配,它将添加null。
$codice = "SUT03M SUT02M";
$prodotto = "Arrabbiata";
$quantita = "12 6";
$prezzo = "1.25 1.3";
$column_keys = array("codice","prodotto","quantita","prezzo");
$res = array();
$c = 0;
$sql = "";
$max = array("k" => 0,"v" => "");
foreach ($column_keys as $key => $value) {
$res[$value] = explode(" ",${$value});
$c = count($res[$value]);
if($c > $max["k"])
$max = array("k" => $c,"v" => $value);
}
if($max["k"] > 0){
$sql = "INSERT INTO test (".implode($column_keys,",").") VALUES ";
for ($i=0; $i < $max["k"] ; $i++) {
$ar = array();
foreach ($column_keys as $key => $value)
$ar[] = isset($res[$value][$i]) ? $res[$value][$i] : "NULL";
$adstrng = $i>0 ? ",":"";
$sql.= $adstrng."(".implode($ar,",").")";
}
}
echo $sql;
就像@tadman所评论的那样,请不要使用弃用的代码并尝试使用 更新的标准,如PDO