2015-03-21 3 views
0

Можно ли добавить несколько записей в один столбец и отдельные записи в других столбцах?Вставить несколько enteries в один столбец

Например

$sql="INSERT INTO The_table (firstname, lastname, address) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[address]'"; 

Тогда у меня есть несколько записей флажок мне нужно вставить - возраст, размер рубашки, высота в один столбец называется о.

Как написать заявление $ sql?

+0

Вы можете попробовать вставить возраст, размер рубашки, высоту как запятую, разделенные в одном столбце –

+0

Используете ли вы mysqli или PDO? Скажите, пожалуйста, что вы не используете mysql_ * функции в PHP ... –

+0

Я использую mysqli ... Возможно ли кому-то ответить на заданный вопрос? – alexma

ответ

1

Один из возможных вариантов (кроме CONCAT упомянутых), является создание составных переменных в PHP.

Например,

$about = $_POST['about1'] . ', ' . $_POST['about2']; 

, а затем в запросе вы могли бы сделать что-то вроде этого:

$sql="INSERT INTO The_table (firstname, lastname, address) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[address]', '$about'"; 

Если вы не знаете, сколько различных записей там будет в $about, то вы можете создать что-то в своей форме, захватив данные с помощью инструкции foreach, такой как

foreach ($_POST['about'] as $about) { etc. } 

, и вы указали свою переменную в форме, подобной этой.

<input type="text" name="about[]" /> 

, если ваш «о переменной является текстовое поле, то это:

<textarea name='about[]'></textarea> 
+0

Вам не хватает котировок вокруг вашего '$ about' в запросе. –

+0

хорошо catch. отредактировал – nomistic

+0

Спасибо, но я не знаю, сколько записей будет в $. Можете ли вы объяснить свой код foreach ($ _POST ['about'] как $ about) {и т. Д.}, Какой код входит в {} – alexma

1

Вы можете использовать функцию CONCAT

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat 

У меня нет сервера MySQL, чтобы проверить это, но я думаю, что это хороший подход, чтобы сделать это.

$sql="INSERT INTO The_table (firstname, lastname, address, about) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[address]', CONCAT('$_POST[age]', ' ', '$_POST[shirtSize]', ' ', '$_POST[height]')"; 

Надеется, что это помогает

-1

Вы можете отделяя свои записи с помощью трубы или другой вещи.

Такие, как:

$sql="INSERT INTO `The_table` (`firstname`,`lastname`,`address`,`info`) VALUES ('{$_POST[firstname]}','{$_POST[lastname]}','{$_POST[address]}','Red|XXL|50')"; 
+0

'другое дело'? Что еще? – yochannah

+0

OP получает свои данные от $ _POST - ваш ответ должен отражать это, а не hardcoding строку. –

3

Вы можете очень легко сцепить строки в PHP, который затем будет введен в запрос SQL вставки.

$about = "AGE: $_POST[age]\nSHIRT SIZE: $_POST[shirt_size]\nHEIGHT: $_POST[height]"; 
$sql = "INSERT INTO The_table (firstname, lastname, address, about) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[address]', '$about')"; 

Конечно, вы должны готовиться ваше заявление и использовать соответствующие значения связывания вместо:

$sql = "INSERT INTO The_table (firstname, lastname, address, about) VALUES (?, ?, ?, ?)"; 
// now prepare, bind and execute 

Если вы не сделаете подготовки/связывания вещи, то вы просите проблем безопасности мудрым. По крайней мере вам необходимо применить соответствующие механизмы экранирования к предоставленным пользователем данным.

Копирование примера из http://php.net/manual/en/mysqli-stmt.execute.php и изменить его для вас:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

/* Prepare an insert statement */ 
$query = "INSERT INTO The_table (firstname, lastname, address, about) VALUES (?,?,?,?)"; 
$stmt = $mysqli->prepare($query); 

$stmt->bind_param("ssss", $_POST['first'], $_POST['last'], $_POST['address'], $about); 

/* here's where you do your special assignments */ 
$about = "AGE: $_POST[age]\nSHIRT SIZE: $_POST[shirt_size]\nHEIGHT: $_POST[height]";  

/* Execute the statement */ 
$stmt->execute(); 

/* close statement */ 
$stmt->close(); 
+1

Но если бы у вас была БД, почему бы вам хотеть сделать это, а не помещать отдельные типы данных в отдельные столбцы? – BigScar

+0

Можете ли вы написать // сейчас готовить, связывать и выполнять, чтобы я мог видеть это и понимать, что вы говорите? – alexma

+0

Что здесь происходит? "Ssss". Извините, что я новичок. – alexma

0

Объединить свои поля с помощью функции PHP Concat

$about="$age|$shirt_size|$height"; 
$sql = "INSERT INTO table (firstname, lastname, address, about) VALUES ('$fname','$lname','$address', '$about')"; 

И получить тот же из базы данных, . использовать функцию разрыва в PHP.

$about=explode('|',$result['about']); 
$age=$about[0]; 
$shirt_size=$about[1]; 
$height=$about[2]; 
Смежные вопросы