2016-09-06 2 views
-1

БД ПриЯ хочу добавить несколько значений в базе данных MySQL

table: "country" 
coloums:"id_country,country_name" 

У меня есть только один текст Фейлд:

Country: <input type=text name="country_name" > 
$conn->query("insert into country"); 

я хочу, чтобы заполнить эту Фейлд с

" Индия, Австралия, Канада и т.д. «.

из приведенных выше линий (,) должно рассматривать как новое значение.! поэтому он должен хранить в БД с id_country приращению ..

+3

Зачем вам это нужно? Это сделает ваши данные трудными для использования позже и далеки от хорошего дизайна базы данных. –

+1

вы можете предложить лучший способ добавить несколько значений. @ JayBlanchard –

+2

почему это плохо @JayBlanchard. он сказал: «Из вышеприведенной строки (,) нужно относиться как к новому значению.!», поэтому он станет похожим на 1, Индию 2, Австралию и т. д. –

ответ

3

Вы можете сделать это, как показано ниже: -

<?php 

$data = "india,australia,canada"; 
$exploded_data = explode(',',$data); 
$data_to_insert = "('".implode("','",$exploded_data)."')"; 

echo $data_to_insert; 

Выход: -

https://eval.in/636118

и

https://eval.in/636131

Примечание: - Ваша колонка id_country должна быть Auto-incremented primary key.

Если это так, то только один вопрос: -

"INSERT INTO country (country_name) VALUES ".$data_to_insert;

Или

"INSERT INTO country (country_name) VALUES $data_to_insert";

будет делать все-вещь

Лучше сделать это с prepared statements.

2

Лучше всего было бы использовать explode() функцию PHP на вводимый текст, используя ", " в качестве разделителя, а затем добавить каждую страну в результирующем массиве в базе данных через петлю foreach.

Подробнее: http://php.net/manual/en/function.explode.php

2

Я не уверен, если я вас понимаю, но я могу объяснить вам, взрываются. Он вернет массив строк.

$values = "value1, value2"; 
$explode = explode(",", $values); 

После этого можно продолжить следующее:

$explode[0]; 
$explode[1]; 
+0

до взрыва нормально, как хранить данные ..? –

+0

Если вы хотите сохранить свои данные в 1 Value, как вы позволяете пользователю разделять эти значения? С пробелом или ','? Вы могли бы Имплодировать это тогда –

2
$countries = ['india','australia','canada'] 

foreach ($countries as $country) { 
    // Run/build you sql query 
} 

пример SQL-запрос

INSERT INTO `country` (`country_name`) 
VALUES ('india'); 
2

Для обработки посланной строки во-первых, убедитесь, что переменная фактически установлена ​​и проходит рудиментарные тесты и использовать взрываются, чтобы сгенерировать массив, содержащий названия стран. Используя mysqli и prepared statements, вы можете сразу создать инструкцию sql, связать необходимые параметры и переменные один раз, но выполнить несколько раз очень быстро.

$dbhost = 'localhost'; 
$dbuser = 'xxx'; 
$dbpwd = 'xxx'; 
$dbname = 'xxx'; 
$db = new mysqli($dbhost, $dbuser, $dbpwd, $dbname); 

/* make sure the posted variable isn't empty */ 
$countries=!empty($_POST['country_name']) && stristr($_POST['country_name'], ',') ? $_POST['country_name'] : false; 
if($countries){ 

    /* explode the string to create the array */ 
    $countries=explode(',',$countries); 

    /* construct sql statement for use as a prepared statement */ 
    $sql='insert into `country` set `country_name`=?'; 

    /* prepare the statement object */ 
    $stmt=$db->prepare($sql); 

    /* bind the param to the variable */ 
    $stmt->bind_param('s', $country); 

    /* iterate through all countries from POSTed string and execute the statement */ 
    foreach($countries as $country){ 
     $stmt->execute(); 
    } 
} 

$stmt->close(); 
$db->close(); 
Смежные вопросы