2015-07-15 3 views
-4

Я пытаюсь вставить данные (несколько записей) в таблицу с помощью php loop.Вставить в таблицу с php loop

Этот код:

<?php 
$array = array('blue','red','green','yellow','black','white','blue','green'); 
$array = array_values(array_unique($array)); // remove duplicate and re-index array also 
$vals = array_count_values($array); 
print_r($array); 
?> 

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

Array ([0] => blue [1] => red [2] => green [3] => yellow [4] => black [5] => white) 

Теперь я хочу, чтобы вставить вывод в моей таблице (цвета) с этим кодом:

<?php 
    for($i = 0; $i < count($vals); $i++){ 
     $query = "INSERT INTO colours VALUES('$array[$i]');"; 
     mysql_connect('localhost','root',''); 
     mysql_query($query); 
    } 
?> 

Что я делаю неправильно?

+1

Вы также должны выбрать 'database'. И попробуйте избежать выполнения запросов в цикле. –

+0

Oke ... Я сделал с этим :) Tq –

+0

Да, здесь нет указанной базы данных. –

ответ

-1

Вы можете сделать это, не используя цикл.

Вы спрашиваете будет.

$array = array('blue','red','green','yellow','black','white','blue','green'); 
$array = array_values(array_unique($array)); 
$query = "INSERT INTO test VALUES ('".implode("'),('",$array)."');"; 
+0

Вы уверены, что это сработает? –

+0

Да, я уверен, –

+0

Постарайтесь запустить его и посмотреть. –

0

Возможно, вы захотите сделать что-то подобное, указав имя столбца, которое вы вставляете в таблицу цветов.

$conn = mysql_connect('localhost', 'root', ''); 
if (!$conn) { 
    die('Could not connect: ' . mysql_error()); 
} 

for($i = 0; $i<$vals; $i++) { 
    $sql="INSERT INTO colors (Column_Name) VALUES ('$array[$i]');"; 
    $result = mysql_query($sql); 
    if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
    } 
} 

Это должно привести вас на правильный путь.

2

Здесь нужно исправить несколько вещей. Во-первых, это учитывать тот факт, что вы не задающий базу данных, как это:

$conn = mysql_connect('localhost','root',''); 
$db = mysql_select_db('YourDataBaseHere', $conn); 

Я полагаю, если вы уже создали таблицу, то она должна жить в какой-то базе данных, что вы уже создано.

Во-вторых, я думаю, что ваш запрос может понадобиться для исправления. Вы не указываете имена столбцов для вашей тестовой таблицы. В-третьих, вы не должны запускать запросы в цикле. Вместо этого, вы можете попробовать построение запроса, который делает несколько вставок с одним запросом, например:

$sql = "INSERT INTO colours (`color`) VALUES ('" . implode("'),('", $array) . "')"; 
mysql_query($sql, $conn); 

Для намерений и целей вашего конкретного случая использования, вам не нужен даже циклическая структура, потому что весь массив значения вставляются в строку для формирования окончательного запроса, как показано. Это добавит несколько строк для всех ваших цветов. Эта стратегия не рекомендуется для сверхбольших массивов. Я советую вам отдельно посмотреть, как делать несколько вложений с помощью одного запроса с использованием MySQL/PHP. Тогда строка $ sql может иметь больше смысла для вас.

В-четвертых, в исходном, неотредактированном вопросе используется таблица под названием «test», поэтому я предполагаю, что вы не в производственной среде. Независимо от того, я бы посоветовал ввести пароль для вашей учетной записи root admin, а не оставить его пустым. Это просто хорошая практика.

Кроме того, прочитать: Why shouldn't I use mysql_* functions in PHP?

-1

Ваш код должен быть как

mysql_connect('localhost','root',''); //put this line at the start 

mysql_select_db("your db name"); //and add this line after it 

$array = array('blue','red','green','yellow','black','white','blue','green'); 

$array = array_values(array_unique($array)); // remove duplicate and re-index array also 

$arr_str = implode("'),('",$array); 

$sql_query = "INSERT INTO `test` (`colours`) VALUES ('".$arr_str."')"; 

mysql_query($sql_query); 
Смежные вопросы