Как вставить значения в MySQL

vmnetwork

Новичок
Сново вот возникла небольшая проблема, пытаюсь из Excel (XLS) встевить данные в MySQL, с преобразованием данных я вродебы разобрался - использовал пакет Spreadsheet_Excel_Reader. Вообщем получилось распознать файл и вывести данные в HTML, вопрос в том как правильно их теперь записать.

Структура таблицы MySQL:
idcatalog | memberid | catalogban | catalogname | cataloged | catalogprice| idfirm | statusvip | catalogday | catalogday2


Теперь собственно код:
<?php
include ('./sources/connect.php');
include ('./data/config.php');
include ('./data/config_mysql.php');
include ('./data/config_table.php');

require_once 'excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('cp-1251');
$data->setUTFEncoder('mb');

$data->read('./xls/go.xls');
error_reporting(E_ALL ^ E_NOTICE);

echo ("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
<title>Untitled Document</title>
</head>

<body>");
echo ('<table border=\"1\">');
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++)
{
echo('<tr>');
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++)
{
echo ('<td>'.$data->sheets[0]['cells'][$i][$j].'</td>');

}
echo('</tr>');


$row[] = $data->sheets[0]['cells'][$i][$j];
$row = implode(',', $row);

$idfirm = "8";
$catalogban = "1";
$memberid = "28";
$statusvip = "3";
$time = "0";
$oldtime = "0";

$query = "insert into $catalog values (NULL, '$memberid', '$catalogban', '$row', '$idfirm', '$statusvip', '$time', '$oldtime')";
var_dump($query);
$result = mysql_query($query) or die($query.mysql_error());
if ($result)
echo 'Прайс добавлен ';
else
echo 'Не добавлено';

unset($row);


}
echo ('</table>');
echo ("</body>
</html>");
?>
Не получается у меня что то со вставкой :( , Заранее спасибо :)
 

vmnetwork

Новичок
Прочел...Спасибо за ссылки, но все вроде бы правильно ... что мне уже советовали???

Если вкрадце.. то MySQL и остально все правильно... прошу помощи в массиве $row
и правильно ли я массив из трех значений вставляю в БД
$query = "insert into $catalog values (NULL, '".$memberid."', '".$catalogban."', '".$row."', '".$idfirm."', '".$statusvip."', '".$time."', '".$oldtime."')";

Не уверен я что массив правильно создал и правильно его вставил :(
Выдается сообщение Error: Query was empty при попытке вставить... остальное все нормально...
 

Ragazzo

TDD interested
NULL уже как то лольно выглядит...если не уверен есть мануал на всякий случай, в чем проблемы?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
А, сори, это не ты был.
Плохо прочел, ибо если бы прочитал хорошо, то вставил сюда РЕАЛЬНЫЙ запрос, а не смесь sql и php.

А это указано во втором пункте дебага
 

vmnetwork

Новичок
переделал запрос

$query = "insert into $catalog values (NULL, '".$memberid."', '".$catalogban."', '".$row."', '".$idfirm."', '".$statusvip."', '".$time."', '".$oldtime."')";
$result = mysql_query($query) or die($query.mysql_error());
if ($result)
echo 'Прайс добавлен ';
else
echo 'Не добавлено ';

Теперь выдает Column count doesn't match value count at row... не пойму я как значения массива вставлять.. и вроде бы
 

baev

‹°°¬•
Команда форума
— надо не просто прочесть «для галочки», а ещё и подумать и кое-какие действия предпринять.

А судя по вот этому:
и правильно ли я массив из трех значений вставляю в БД
$query = "insert into $catalog values (NULL, '".$memberid."', '".$catalogban."', '".$row."', '".$idfirm."', '".$statusvip."', '".$time."', '".$oldtime."')";

Не уверен я что массив правильно создал и правильно его вставил :(
Выдается сообщение Error: Query was empty при попытке вставить...
— Вы вообще текст по ссылке прочесть не удосужились.
 

vmnetwork

Новичок
Mr_Max - Я прекрасно знаю что это значит... массив не разбивается на три значения и поэтому число строк не совпадает... вот и прошу помощи почему он не разбивается... хротя вроде бы $row = implode(",", $row); должен был помочь...

baev - про
$query = "insert into $catalog values (NULL, '".$memberid."', '".$catalogban."', '".$row."', '".$idfirm."', '".$statusvip."', '".$time."', '".$oldtime."')";
Все прекрасно работает.... если туда не вставлять массив а просто вставить вместо $row три других значения... в тексте который мне дали я не увидел про то как вставить массив который я создал... тоесть он по сути должен заменить 3 обычных значения
 

vmnetwork

Новичок
DIG - господи... да не ужто вы подумали что я не знаю перевода... мне нужна помощь в разбивке массива на три значения...
 

Ragazzo

TDD interested
vmnetwork
сформулируй четко все...из того что ты написал я только понял что тебе нужно впихнуть массив в поле таблицы, это как бы нонсанс....посмотри еще list() может поможет в твоих терзаниях...четче формулируй слова
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Скажу третий и последний раз
вставил сюда РЕАЛЬНЫЙ запрос, а не смесь sql и php.

не вижу смысла продолжать дискусию если не будет ответа
 

Вурдалак

Продвинутый новичок
Было бы неплохо оправлять подобные темы в карантин до нормального оформления кода автором.
 

vmnetwork

Новичок
Mr_Max - а вы поясните что не так, если не сложно...? по данной вами ссылке:
Правильная работа со спецсимволами при составлении запросов
$query="INSERT INTO `table` VALUES(NULL,'$name','$date','$price')";
- все помоему выглядит так как в инструкции

вот так?
$query = "insert into $catalog values (NULL, '$memberid', '$catalogban', '$row', '$idfirm', '$statusvip', '$time', '$oldtime')";
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
var_dump($query) !!!!!! :confused:
100500 раз еще сказать чтоб дошло?
 

DIG

Новичок
Партнер клуба
vmnetwork я думаю Mr_Max просит показать нам чистый запрос sql, без всякого php.
например так: INSERT INTO 'catalog' VALUES ('a','b','c');
И я вообще когда втыкаюсь в такое - тупо делаю echo $query; die(); и смотрю чтоже у меня там в запросе.
 

vmnetwork

Новичок
дописал var_dump($query)
Результат впрочем не изменился, Mr_Max ну извини если не понимаю с нескольких раз, не так все хорошо знаю...
insert into cat2_catalog values (NULL, '28', '1', '', '8', '3', '0', '0')Column count doesn't match value count at row 1

Ну впринципе видно что нет значения $row (там как раз три значения должно быть - т.е. три поля)... а они не вставляются, из-за этого то и ошибка Column count doesn't match value count, толи массив неправильно создал то ли вставляю не так...
 

craz

Нестандартное звание
$query = "insert into $catalog values (NULL, '".$memberid."', '".$catalogban."', $row, '".$idfirm."', '".$statusvip."', '0', '0')";

вы не видите ничего странного? именно там где у вас ошибка??
 
Сверху