2013-02-24 5 views
3

Обновление: Я забыл упомянуть, что echo $matstring выходы '65.70', 'Coles','34 days','14' - что будет выглядеть как синтаксис?Вставить php-массив в таблицу mysql

Я новичок в php/mysql, и я думаю, что это довольно простой, но, прочитав все другие вопросы, связанные с stackoverflow на эту тему и несколько раз играя с разными версиями моего кода, я не могу понять, что Я поступаю неправильно. Был бы очень признателен за любую помощь/предложения.

Цель: передать данные из моего PHP массива ($matrix) в таблицу тузд

$matrix[1]= 
([0] => 65.70 [1] => Coles [2] => 34 days [3] => 14) 

$matrix[2]= 
([0] => 62.70 [1] => Coles [2] => 13 days [3] => 14) 

$matrix[3]= 
([0] => 12.70 [1] => Safeway [2] => 43 days [3] => 14) 

Код:

$matstring=implode("','",$matrix[1]); 
$matstring="'".$matstring."'"; 
mysql_query('INSERT INTO Australia (Price, Company, Days, Weight) VALUES ('$matstring')'); 
+0

вы можете использовать Serialize ($ данных) перед установкой и десериализации при извлечении данных. или использовать json_encode и json_decode .. в любом случае. – skrilled

+0

Это не ответ. Попробуйте изменить mysql_query на эхо, а затем проверьте синтаксис. Скорее всего, дополнительные '' 'около $ matstring означают, что вы используете' '' 'вокруг значений. –

+0

oh nevermind Я просто прочитал название и предположил, что это именно то, что я ожидал .. а также использование родных запросов кажется плохой идеей против использования PDO и легко сделать что-то вроде $ dbh-> prepare ("INSERT INTO Australia (Price) , Компания, Дни, Вес) ЦЕННОСТИ (?,?,?,?) "); $ Stmt-> выполнить ($ матрица [1]); – skrilled

ответ

1

исправленный код:

$matstring=implode("','",$matrix[1]); 

mysql_query("INSERT INTO Australia (Price, Company, Days, Weight) VALUES ('$matstring')"); 

(т.е. удалить вторую строку из оригинального кода и поставить двойные кавычки вокруг аргумента mysql_query)

Цените помощь user1847757 в - в с/он отметил, $matstring сами был правильным, но одиночные кавычки внутри VALUES(' ') были соединены в одиночные кавычки добавлены в $matstring во 2-е линии моего оригинального кода, в результате чего VALUES(''65.70','Coles','34 days','14'')

Спасибо всем за вашу помощь & предложений

0

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

INSERT INTO ... VALUES (''65.70,Coles,34 days,14''); 

внимание, как все 4 значения находятся внутри одной строки .. но строка также неправильно ('').

вам нужно процитировать каждое отдельное значение массива:

('65.70', 'Coles', '34 days', '14') 

ТОГДА вы взрывать его, давая вам

INSERT INTO ... VALUES ('65.70', 'Coles', etc...) 
+0

Я все еще немного смущен. Когда я повторяю $ matstring с кодом, который я разместил, он выводит «65 .70», «Coles», «34 дня», «14». Так разве это не тот синтаксис, который мне нужен? Почему я не могу передать его в VALUES ('$ matstring')? – user2037290

+0

Ваша матовая строка правильная; однако, когда вы используете VALUES ('$ matstring') в своей строке SQL, вы добавляете дополнительные цитаты вокруг него, создавая VALUES ('' 65.70 ',' Coles ',' 34 days ', 14' ') – user18477575

0
mysql_query("INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)"); 
+0

Я пробовал это коррекция, но она все еще не работала (перерывы сценария) – user2037290

+0

отредактировал, попробуйте .... – Eugen

+0

и сообщите об ошибке ... – Eugen

2

, когда я запускаю этот код:

$matrix = array(); 
$matrix[1] = array(0 => 65.70, 1 => 'Coles', 2 => '34 days', 3 => 14); 
$matstring=implode("','",$matrix[1]); 
$matstring="'".$matstring."'"; 
print "INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)"; 

стали результатом:

INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ('65.7','Coles','34 days','14') 
0

я столкнулся похожей проблемой сегодня и решить ее так: в моем случае $bank_info является массив который содержит da те, чтобы вставить в новой строке ...

$sql = "INSERT INTO user_bank_info (user_id, 
            name, 
            address, 
            ZIP, 
            city, 
            state, 
            country, 
            wat_id, 
            bank_bic, 
            account_iban) 
     VALUES ('$id_user', 
       '{$bank_info['name']}', 
       '{$bank_info['addr']}', 
       '{$bank_info['zipn']}', 
       '{$bank_info['city']}', 
       '{$bank_info['stat']}', 
       '{$bank_info['ctry']}', 
       '{$bank_info['watn']}', 
       '{$bank_info['bbic']}', 
       '{$bank_info['iban']}')"; 
0

Использование сериализации функции для добавления массива данных в таблицу. Экс-

$array["a"] = "Foo"; 
$array["b"] = "Bar"; 
$array["c"] = "Baz"; 
$array["d"] = "Wom"; 
$str = serialize($array); 

добавить $str into table.Когда мы получаем данные затем использовать десериализации function.Ex- $arr = unserialize(urldecode($strenc));

Примечание: Для URL используйте urldecode функцию.

0

Вот как я это делаю (очень простой):

//Fetch the original array: 

$query = mysql_query("SELECT * FROM Original_Table") or die(mysql_error()); 

while($record = mysql_fetch_array($query)){ 

$num=count($record); //Count The Number Of elements in the array 

$num=$num/2; //use this if the array has both key numbers AND names 

$cnum=0; 

for($cnum;$cnum<$num;$cnum++){ //cycle through the elements of the array 

$entry=$entry."'".$record[$cnum]."',"; 

} 

$entry=substr($entry,0,strlen($entry)-1);// this just removes the final comma 

// Now we can add the entry into the new table: 

mysql_query("insert into New Table (Field1, Field2,Field3.....etc) values($entry)")or die(mysql_error()); 

}//end while 
Смежные вопросы