Php Mysql在列

时间:2018-02-14 18:33:30

标签: php mysql

我有以下问题: 我有不同的数组,每个数组都包含一个项目列表。 我尝试在数据库中插入,但每个列表的结果都是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

我尝试了很多代码,但总是一样。

谢谢你。

2 个答案:

答案 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