У меня есть четыре массива, состоящие из некоторых значений. Я хочу вставить Array с тем же индексом в той же строке. Например:
$product = [Facebook, Twitter]; $sub_product = [Likes, Boost]; $plan = [10k, 20k]; $months = [3,6];
Я хочу, чтобы таблица была чем-то вроде этого
+----+----------+-------------+------+--------+ | id | product | sub_product | plan | months | +----+----------+-------------+------+--------+ | 1 | Facebook | Likes | 10k | 3 | +----+----------+-------------+------+--------+ | 2 | Twitter | Boost | 20k | 6 | +----+----------+-------------+------+--------+
Каким будет лучший способ достичь этого, чтобы индекс каждого массива попадал в одну строку? Я хочу вставить в таблицу HTML
Если вы хотите выполнить mysql_query в одиночном кадре, тогда
$product = [Facebook, Twitter]; $sub_product = [Likes, Boost]; $plan = [10k, 20k]; $months = [3,6]; $query = 'insert into TABLE (product,sub_product,plan,months) values'; foreach( $product as $index => $col ){ $query .= "( '".$product[$index]."', '".$sub_product[$index]."', '".$plan[$index]."', ".$months[$index]." ),"; } $query = rtrim( $query, ','); mysqli_query(mysql_query);
Это будет быстрее, чем выполнение нескольких функций mysql_query в цикле.
Попробуйте этот код,
foreach($product as $key=>$p){ $data = array( 'product'=>$p, 'sub_product'=>$sub_product[$key], 'plan'=>$plan[$key], 'months'=>$months[$key] ); //Code to insert this array to Database // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); $sql = "INSERT INTO `table`('product','sub_product',...) VALUES ($data['product'],$data['sub_product'],...)"; mysqli_close($conn); //OR If you are using Codeigniter, $this->db->insert('table',$data); }
этот код должен работать,
$product = array("Facebook", "Twitter"); $sub_product = array("Likes", "Boost"); $plan = array("10k", "20k"); $months = array(3,6); for($i=0;$i<count($product);$i++){ $product_name=$product[$i]; $sub_product_name=$sub_product[$i]; $plan_name=$plan[$i]; $month_no=$months[$i]; echo "insert into table_name (product_name, sub_product_name, plan_name, month_no) values ('$product_name', '$sub_product_name', '$plan_name', '$month_no')"; echo "<br>"; }
Спасибо Amit
Предполагая, что все массивы имеют одинаковую длину, а $mysqli
– это соединение с вашей базой данных,
for ($i=0; $i < count($product); $i++) { $query = "INSERT INTO your_table (id, product, sub_product, plan, months)"; $query .= " VALUES ('$i', '{$product[$i]}', '{$sub_product[$i]}', '{$plan[$i]}', '{$months[$i]}')"; $mysqli->query($query); }
Предполагая, что размер всех вышеперечисленных массивов одинаковый в данный момент времени и их индексирование согласовано, вы можете использовать следующий код:
<?php $product = array('Facebook', 'Twitter'); $sub_product = array('Likes', 'Boost'); $plan = array('10k', '20k'); $months = array(3,6); /* Connected to a mysql Database */ $i = 0; //initialize a counter while($i < sizeof($product)) //Run the loop (Twice in this case) { //Store the current iteration value in variables $current_product = $product[$i]; $current_sub_product = $sub_product[$i]; $current_plan = $plan[$i]; $current_months = $months[$i]; //Prepare the SQL statement $sql = <<<EOD INSERT INTO table_product(product,subproduct,plan,months) VALUES ('$current_product','$current_sub_product','$current_plan',$current_months) EOD; $i++; echo $sql . "<br />"; } ?>
Сделайте так просто:
$count = count($product); $index=0; while($index<$count){ //do your stuff here ie insert query $sql = "INSERT INTO your_table SET product='".$product[$index]."', sub_product='".$sub_product[$index]."', plan='".$plan[$index]."', months='".$months[$index]."' "; mysql_query($sql); $index++; }
в$count = count($product); $index=0; while($index<$count){ //do your stuff here ie insert query $sql = "INSERT INTO your_table SET product='".$product[$index]."', sub_product='".$sub_product[$index]."', plan='".$plan[$index]."', months='".$months[$index]."' "; mysql_query($sql); $index++; }