|
|
|
| вот структура БД:
CREATE TABLE IF NOT EXISTS `auto_100` (
`id` int(11) NOT NULL auto_increment,
`company` varchar(30) NOT NULL,
`price` varchar(20) NOT NULL,
`change` varchar(20) NOT NULL,
`perc_change` varchar(20) NOT NULL,
`volume` varchar(20) NOT NULL,
`time` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
пытаюсь записать в БД следующим запросом выше полученный массив, подскажите что не так?
<? php
$sql = "INSERT INTO (`auto_100`
,`company`
,`price`
,`change`
,`perc_change`
,`volume`
,`time`
) VALUES";
mysql_query($sql ('".$result[1]."', '".$result[2]."', '".
$result[3]."', '".$result[4]."', '".$result[5]."', '".
$result[6])."')) or die("Error in $sql : ".mysql_error());
?>
|
пишет следующее: F
atal error: Call to undefined function INSERT INTO (`ftse_100` ,`company` ,`price` ,`change` ,`perc_change` ,
`volume` ,`time` ) VALUES() in
/var/www/dmitrii/data/www/fx-inform.ru/scripts/
copy_indeces.php on line 63
|
| |
|
|
|
|
|
|
|
для: Softic
(15.01.2010 в 11:17)
| | А это структура моего массива:
Array
(
[0] => Array
(
[0] => avtogir GROUP PLC284.803.801.35570,55405:42
[1] => AUTTOMOBILLE GROUP1,174.0011.000.9540,54905:36
[2] => ARG AUT929.508.500.9283,78505:38
[3] => AUTO TRUST333.302.000.6071,65405:42
[4] => ANGLO AUTO2,774.5023.500.851,176,22505:42
[5] => AUTO FAGASTA1,022.0022.002.20802,43505:42
[6] => AUTO BRIT875.5016.001.862,595,92005:42
)
[1] => Array
(
[0] => avtogir GROUP PLC
[1] => AUTTOMOBILLE GROUP
[2] => ARG AUT
[3] => AUTO TRUST
[4] => ANGLO AUTO
[5] => AUTO FAGASTA
[6] => AUTO BRIT
)
[2] => Array
(
[0] => 284.80
[1] => 1,174.00
[2] => 929.50
[3] => 333.30
[4] => 2,774.50
[5] => 1,022.00
[6] => 875.50
)
[3] => Array
(
[0] => 3.80
[1] => 11.00
[2] => 8.50
[3] => 2.00
[4] => 23.50
[5] => 22.00
[6] => 16.00
)
[4] => Array
(
[0] => 1.35
[1] => 0.95
[2] => 0.92
[3] => 0.60
[4] => 0.85
[5] => 2.20
[6] => 1.86
)
[5] => Array
(
[0] => 570,554
[1] => 40,549
[2] => 83,785
[3] => 71,654
[4] => 1,176,225
[5] => 802,435
[6] => 2,595,920
)
[6] => Array
(
[0] => 05:42
[1] => 05:36
[2] => 05:38
[3] => 05:42
[4] => 05:42
[5] => 05:42
[6] => 05:42
)
)
|
| |
|
|
|
|
|
|
|
для: Softic
(15.01.2010 в 11:19)
| | - | |
|
|
|
|
|
|
|
для: Softic
(15.01.2010 в 11:17)
| |
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
|
| |
|
|
|
|
|
|
|
для: Softic
(15.01.2010 в 11:17)
| | перепишите вызов следующим образом.
<?
$sql = ....;
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
|
Любые изменения вносите только в строку $sql = ...
последние две строки должны остаться без изменений | |
|
|
|
|
|
|
|
для: Trianon
(15.01.2010 в 11:46)
| | Объясните пожалуйста в чем заключается ошибка, перепробовал все варианты кавычек и точек по краям переменных?
Ошибка:
Parse error: syntax error, unexpected T_STRING in /var/www/........./ins.php on line 42
|
код:
<? php
include("config.php");
$sql = "INSERT INTO 'auto_100' ('id', 'company', 'price',
'change', 'perc_change', 'volume', 'time')";
if(!mysql_query($sql) VALUES ('12','$result[1]','$result[2]',
'$result[3]','$result[4]','$result[5]','$result[6]'))
or die("error on request:<br>$sql <br>".mysql_error()); //<= 42 строка - ошибка
?>
|
| |
|
|
|
|
|
|
|
для: SofTic
(17.01.2010 в 16:13)
| | > if(!mysql_query($sql) VALUES (
константы VALUES в php нет
наверное имелось ввиду
$sql .= " VALUES ( .........
без всяких if(!mysql_query($sql) | |
|
|
|
|
|
|
|
для: SofTic
(17.01.2010 в 16:13)
| | У меня в прошлом посте была такая фраза "последние две строки должны остаться без изменений".
Вот эти вот:
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
|
Вы их меняете. И спрашиваете у меня совета.
Какой ответ Вы ждете? | |
|
|
|
|
|
|
|
для: Trianon
(17.01.2010 в 19:07)
| | дело в том что я пробовал ваш вариант только вставлял как одну строку, тоже неполучилось. только затем начал экспериментировать.
теперь выдает следующую ошибку:
error on request:
INSERT INTO auto_100 (id, company, price, change,
perc_change, volume, time) VALUES ('0','Array[0]',
'Array[0]','Array[0]','Array[0]','Array[0]','Array[0]')
You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the
right syntax to use near 'change, perc_change, volume,
time) VALUES ('0','Array[0]','Array[0]','Array[0]',' at
line 1
|
<?php
include("config.php");
$sql = "INSERT INTO auto_100 (id, company, price, change,
perc_change, volume, time) VALUES ('0','$result[1]
[0]','$result[2][0]','$result[3][0]','$result[4]
[0]','$result[5][0]','$result[6][0]')";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
?>
|
| |
|
|
|
|
|
|
|
для: Softic
(18.01.2010 в 07:05)
| | вам же уже сказали выше
вот рабочий код:
<?php
include("config.php");
$sql = "INSERT INTO auto_100 (id, company, price, change, perc_change, volume, time) VALUE ('0','$result[1][0]','$result[2][0]','$result[3][0]','$result[4][0]','$result[5][0]','$result[6][0]')";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
?>
|
| |
|
|
|
|
|
|
|
для: t3ma
(18.01.2010 в 10:31)
| | И чем же этот ваш рабочий код отличается от моего нерабочего?? | |
|
|
|
|
|
|
|
для: Softic
(18.01.2010 в 07:05)
| | В языке php внутрь строк подставляются переменные. Элементы массивов - это несколько более сложные штуки, они тоже подставляются, но нужно явно указывать контекст подстановки {$result[[1][0]}
Так или иначе, прямая подстановка значений в строку SQL без предварительного экранирования mysql_real_escape_string() - всё равно ошибка. помещайте значения в переменные, экранируйте их, потом подставляйте. Будет хорошо. | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 19:09)
| | Теперь у меня добавилось вот какая ошибочка, совсем непонятно причем тут доступ запрещен?? о_ О
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www...../sql_4.php on line 38
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www...../sql_4.php on line 38
|
Я всего лишь дописал след. строки дабы испробвать Ваш совет.
<? php
$escaped_result_1 = mysql_real_escape_string($result[3][2]);
printf ("Escaped string: ", $escaped_result_1);
?>
|
| |
|
|
|
|
|
|
|
для: Softic
(18.01.2010 в 21:26)
| | функция mysql_real_escape_string действует только при установленном соединении с сервером MySQL. | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 21:30)
| | Спасибо, уже сам нашел свою ошибку =) | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 21:30)
| | уважаемый Trianon
сделал следующее:
<? php
$escaped_result_1 = mysql_real_escape_string($result[1][1]);
$escaped_result_2 = mysql_real_escape_string($result[2][1]);
$escaped_result_3 = mysql_real_escape_string($result[3][1]);
$escaped_result_4 = mysql_real_escape_string($result[4][1]);
$escaped_result_5 = mysql_real_escape_string($result[5][1]);
$escaped_result_6 = mysql_real_escape_string($result[6][1]);
?>
|
Что опять не так, быть может у меня поля таблицы не того вида,?
error on request:
INSERT INTO auto_100 (id, company, price, change,
perc_change, volume, time) VALUE ('0','U[1]',
'1[1]','0[1]','[1]','9[1]','[1]')
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right
syntax to use near 'change, perc_change, volume, time)
VALUE ('0','U[1]','1[1]','0[1]','[1]','9[1]',' at line 1
|
| |
|
|
|
|
|
|
|
для: Softic
(18.01.2010 в 21:26)
| | change - зарезервированное слово языка.
Имя таблицы, столбца, поля нужно взять в такие вот `кавычки`.
В принципе, так можно обрамлять любые имена, но те, которые совпадают по написанию с зарезервированными словами, обрамлять нужно обязательно.
Итак
INSERT INTO `auto_100` (`id`, `company`, `price`, `change`,
| и т.д.
Список зарезервированных слов можно посмотреть в мануале
http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 23:24)
| | Изменил переменные и названия полей в таблице, однако снова ошибка
Больше никаких зарезервированных слов в запросе нет, проверил по вашей ссылке.
error on request:
INSERT INTO 'auto_100' ('id', 'company', 'price',
'izmenenie', 'perc_izmenenie', 'volume', 'time')
VALUE ('0','U[1]','1[1]','0[1]','[1]','9[1]','[1]')
You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the
right syntax to use near ''ftse_100' ('id', 'company',
'price', 'izmenenie', 'perc_izmenenie', 'volume', '' at
line 1
|
Причем если я убираю обрамление из кавычек у названия таблицы, т.е. просто: auto_100
то ошибка становится след. вида:
error on request:
INSERT INTO auto_100 ('id', 'company', 'price',
'izmenenie', 'perc_izmenenie', 'volume', 'time') VALUE
('0','U[1]','1[1]','0[1]','[1]','9[1]','[1]')
You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the
right syntax to use near ''id', 'company', 'price',
'izmenenie', 'perc_izmenenie', 'volume', 'time')
VALUE' at line 1
|
Привожу еще раз структуру таблицы:
CREATE TABLE IF NOT EXISTS `auto_100` (
`id` int(11) NOT NULL auto_increment,
`company` varchar(30) NOT NULL,
`price` varchar(20) NOT NULL,
`izmenenie` varchar(30) NOT NULL,
`perc_izmenenie` varchar(20) NOT NULL,
`volume` varchar(20) NOT NULL,
`time` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
| |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 10:11)
| | Сделал такой запрос, все заработало:
<?php
$sql = "INSERT INTO auto_100 (id, company, price,
izmenenie, perc_izmenenie, volume, time) VALUE
('0','$escaped_result_1[1][1]','$escaped_result_2[2][1]',
'$escaped_result_3[3][1]','$escaped_result_4[4][1]',
'$escaped_result_5[5][1]','$escaped_result_6[6][1]')";
?>
|
Однако в базу записались такие значения:
<?php
INSERT INTO `auto_100` (`id`, `company`, `price`,
`izmenenie`, `perc_izmenenie`, `volume`, `time`)
VALUES
(1, 'U[1]', '1[1]', '0[1]', '[1]', '9[1]', '0000-00-00 00:00:00'),
(2, 'U[1]', '1[1]', '0[1]', '[1]', '9[1]', '0000-00-00 00:00:00'),
(3, 'U[1]', '1[1]', '0[1]', '[1]', '9[1]', '0000-00-00 00:00:00');
?>
|
Что я делаю не так, почему не записываются значения из массива? | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 10:22)
| | Сам ступил, зачем то в запросе оставил у переменных скобки от массива ...[1][1]
Теперь все заработало!
Вопрос, как сделать мой неуклюжий код более динамическим, то есть чтобы при его запуске все доступные данные с массива записывались в базу? А не как сейчас у меня только определенные строки.
код:
<?php
preg_match_all("/<a.*>(.*)<\/a>.*<td ".
"align=\"right\" width=\"10%\">(.*)<\/td>.*\"changeup\">".
"(.*)<\/span><\/td>.*\"changeup\">(.*)<\/span><\/td><td".
" align=\"right\" width=\"20%\">(.*)<\/td>.*<td align=".
"\"right\" width=\"15%\">(.*)<\/td>/", $text, $result);
include("config.php");
$escaped_result_1 = mysql_real_escape_string($result[1][1]);
$escaped_result_2 = mysql_real_escape_string($result[2][1]);
$escaped_result_3 = mysql_real_escape_string($result[3][1]);
$escaped_result_4 = mysql_real_escape_string($result[4][1]);
$escaped_result_5 = mysql_real_escape_string($result[5][1]);
$escaped_result_6 = mysql_real_escape_string($result[6][1]);
//printf ("Escaped string: %s\n", $escaped_result_2);
$sql = "INSERT INTO auto_100 (id, company, price,
izmenenie, perc_izmenenie, volume, time) VALUE
('0','$escaped_result_1','$escaped_result_2',
'$escaped_result_3','$escaped_result_4',
\'$escaped_result_5','$escaped_result_6')";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
?>
|
| |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 10:28)
| | Поискал на форуме, уяснил чти для записи многомерного массива используется оператор foreach()
поробовал применить след. конструкцию, но естественно с первого раза ничего невышло, подскажите что не так?
include("config.php");
foreach($result as $row)
{
$q_auto = array();
foreach($row as $col)
$q_auto[] = "'".mysql_real_escape_string($col)."'";
$q_auto = '('.implode(',', $q_auto).')';
}
$sql = "INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES ";
if(!mysql_query($sql.$q_auto))
die("error on request:<br>$sql <br>".mysql_error());
?>
|
выдает след. ошибку:
error on request:
INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES
Duplicate entry '5' for key 1 | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 11:12)
| | >if(!mysql_query($sql.$q_auto))
Что это???!
Я Вам сказал не менять эту строку.
Сказал не один раз. Сказал не просто так, а потому что любое её изменение, в конечном итоге будет приводить к диагностикам, которые будут Вас запутывать.
Почему Вы не слушаете, что Вам говорят?
[Исправлено автором.
Из поста было вычеркнуто значительное количество внезапно возникших идиоматических выражений.] | |
|
|
|
|
|
|
|
для: Trianon
(20.01.2010 в 00:24)
| | это была моя попытка изобрести велосипед =)
Trianon после этого я много чего перебробовал, вашу строку я неменяю, в самом низу страницы я описал текущую свою проблему =) | |
|
|
|
|
|
|
|
для: Softic
(20.01.2010 в 01:01)
| | Как это не меняете? А кто внутрь нее символы .$q_auto пририсовал?
В экспериментах и изобретениях Вы никак не ограничены: поледеятельности перед этими строками - всё в Вашем распоряжении. | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 10:11)
| | В первом запросе не VALUE, а VALUES.
Как у Вас заработало с VALUE? | |
|
|
|
|
|
|
|
для: Лена
(19.01.2010 в 10:23)
| | Сейчас проверил VALUES тоже работает, вообщем похоже нет разницы VALUE или VALUES, хотя не знаю, но у меня работает в обоих случаях. | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 10:32)
| |
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
|
Получается, что можно и так, и так. Только непонятно, в каких случаях лучше VALUE, а в каких VALUES | |
|
|
|
|
|
|
|
для: Лена
(19.01.2010 в 10:55)
| | Поискал на форуме, уяснил чти для записи многомерного массива используется оператор foreach()
поробовал применить след. конструкцию, но естественно с первого раза ничего невышло, подскажите что не так?
<? php
include("config.php");
foreach($result as $row)
{
$q_auto = array();
foreach($row as $col)
$q_auto[] = "'".mysql_real_escape_string($col)."'";
$q_auto = '('.implode(',', $q_auto).')';
}
$sql = "INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES ";
if(!mysql_query($sql.$q_auto))
die("error on request:<br>$sql <br>".mysql_error());
?>
|
выдает след. ошибку:
error on request:
INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES
Duplicate entry '5' for key 1
|
хотя в базу кое-что записывается, но в след. виде:
INSERT INTO `auto_100` (`id`, `company`, `price`, `izmenenie`, `perc_izmenenie`, `volume`, `time`) VALUES
(290, '<a class="blue" HREF="/pasa/za', '<a class="blue" HREF', '<a class="blue" HREF="/pasa/za', '<a class="blue" HREF', '<a class="blue" HREF', '0000-00-00 00:00:00'),
(291, 'AUTTOMOBILLE GROUP', 'ARG AUT', 'AUTO TRUST', 'ANGLO AUTO', 'AUTO FAGASTA', '0000-00-00 00:00:00'),
(292, '<a class="blue" HREF="/pasa/za', '<a class="blue" HREF', '<a class="blue" HREF="/pasa/za', '<a class="blue" HREF', '<a class="blue" HREF', '0000-00-00 00:00:00'),
(293, 'AUTTOMOBILLE GROUP', 'ARG AUT', 'AUTO TRUST', 'ANGLO AUTO', 'AUTO FAGASTA', '0000-00-00 00:00:00');
|
Получается в столбцы записываются данные из этого массива:
[1] => Array
(
[0] => avtogir GROUP PLC
[1] => AUTTOMOBILLE GROUP
[2] => ARG AUT
[3] => AUTO TRUST
[4] => ANGLO AUTO
[5] => AUTO FAGASTA
[6] => AUTO BRIT
)
|
А нужно чтобы записывались данные из каждого массива в свой определенный столбец, помогите пожалуйста. | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 11:14)
| |
<?php
$arr = array(0=>
array('avtogir GROUP PLC284.803.801.35570,55405:42','
AUTTOMOBILLE GROUP1,174.0011.000.9540,54905:36',
'ARG AUT929.508.500.9283,78505:38 '),
1=>array('avtogir GROUP PLC','AUTTOMOBILLE GROUP','ARG AUT'));
for($i=0;$i<count($arr[0]);$i++){
$company = $arr[0][$i];
$price = $arr[1][$i];
$sql = "INSERT INTO auto_100(company,price) VALUES('$company','$price')";
$get_page = mysql_query($sql);
if(!$get_page) exit("Error in " . $sql . mysql_error());
}
?>
|
Может, не самое оптимальное решение... Но думать дольше нет времени.
Остальные поля в базе делайте по аналогии. | |
|
|
|
|
|
|
|
для: Лена
(19.01.2010 в 16:44)
| | Спасибо конечно, но мне это решение не подойдет, так как я привел лишь часть массива, он может быть больше, и значения будут соответственно все другие, нужна какая-то хитрая переборка, а вот какая?
Trianon, снова помогите. | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 16:53)
| | Как это часть массива? Объясните, а то ни Trianon, ни другие не поймут.
В первом посте у вас массив состоит из шести элементов, которые в свою очередь тоже являются массивами.
У вас шесть полей в базе. В каждое из этих полей вам циклом нужно складывать значения одного элемента-массива, напр. значения $arr[0] -
идут в поле price, $arr[1] идут в company и т.д .
Теперь вы говорите, что вы привели часть массива. Если у вас будет больше элементов, значит, и в базе должно быть больше полей -
чтобы было куда складывать данные, которые вы здесь не привели.
Хорошо. Дополните еще ваш массив, допустим, еще двумя элементами. И покажите здесь.
В базе полей только шесть+ одно для id, а в массиве у вас уже 8 элементов. В какие поля вы будете складывать те два элемента,
которые добавили? | |
|
|
|
|
|
|
|
для: Лена
(19.01.2010 в 17:21)
| | Нет, я наверное неправильно выразился, всмысле в каждом массиве может быть больше самих значений, самих элементов останется столько же, это: company, price, izmenenie, perc_izmenenie, volume, time
То есть мне нужно чтобы в поля базы заносились все значения каждого из массивов, независимо сколько их там будет, по 3 в каждом массиве, или по 30. вот собственно | |
|
|
|
|
|
|
|
для: Softic
(19.01.2010 в 17:48)
| | Попытался изменить запрос след. образом:
<? php
include("config.php");
foreach($result as $row)
{
$q_auto = array();
foreach($row as $col)
$q_auto[] = "'".mysql_escape_string($col)."'";
$q_auto = '('.implode(',',$q_auto).')';
}
$sql = "INSERT INTO auto_100 (id, company, price,
izmenenie, perc_izmenenie, volume, time) VALUES
('0','$q_auto[1]','$q_auto[2]','$q_auto[3]','$q_auto[4]',
'$q_auto[5]','$q_auto[6]')";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
?>
|
выходит следующая ошибка:
error on request:
INSERT INTO auto_100 (id, company, price, izmenenie,
perc_izmenenie, volume, time) VALUES
('0',''','0','5',':','4','2')
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right
syntax to use near '0','5',':','4','2')' at line 1
|
немогу понять как при помощи implode() разделить значения в массиве, то есть четко отделить каждое значение друг от друга? | |
|
|
|
|
|
|
|
для: Softic
(20.01.2010 в 00:06)
| | >немогу понять как при помощи implode() разделить значения в массиве, то есть четко отделить каждое значение друг от друга?
implode не делит значения в массиве.
Наоборот, implode объединяет массив в одну строку.
Показали бы, что за массив. Массивы разные бывают. Что за значения? Какого типа? | |
|
|
|
|
|
|
|
для: Trianon
(20.01.2010 в 08:58)
| | Вот структура массива:
Array
(
[0] => Array
(
[0] => avtogir GROUP PLC284.803.801.35570,55405:42
[1] => AUTTOMOBILLE GROUP1,174.0011.000.9540,54905:36
[2] => ARG AUT929.508.500.9283,78505:38
[3] => AUTO TRUST333.302.000.6071,65405:42
[4] => ANGLO AUTO2,774.5023.500.851,176,22505:42
[5] => AUTO FAGASTA1,022.0022.002.20802,43505:42
[6] => AUTO BRIT875.5016.001.862,595,92005:42
)
[1] => Array
(
[0] => avtogir GROUP PLC
[1] => AUTTOMOBILLE GROUP
[2] => ARG AUT
[3] => AUTO TRUST
[4] => ANGLO AUTO
[5] => AUTO FAGASTA
[6] => AUTO BRIT
)
[2] => Array
(
[0] => 284.80
[1] => 1,174.00
[2] => 929.50
[3] => 333.30
[4] => 2,774.50
[5] => 1,022.00
[6] => 875.50
)
[3] => Array
(
[0] => 3.80
[1] => 11.00
[2] => 8.50
[3] => 2.00
[4] => 23.50
[5] => 22.00
[6] => 16.00
)
[4] => Array
(
[0] => 1.35
[1] => 0.95
[2] => 0.92
[3] => 0.60
[4] => 0.85
[5] => 2.20
[6] => 1.86
)
[5] => Array
(
[0] => 570,554
[1] => 40,549
[2] => 83,785
[3] => 71,654
[4] => 1,176,225
[5] => 802,435
[6] => 2,595,920
)
[6] => Array
(
[0] => 05:42
[1] => 05:36
[2] => 05:38
[3] => 05:42
[4] => 05:42
[5] => 05:42
[6] => 05:42
)
)
|
| |
|
|
|
|
|
|
|
для: Softic
(20.01.2010 в 11:32)
| | теперь поменяйте две пресловутые строки на строку echо $sql; | |
|
|
|
|
|
|
|
для: Trianon
(20.01.2010 в 12:19)
| | Немогу понять, какие строки заменить на echo $sql ??
Вот весь код:
<?php
preg_match_all("/<a.*>(.*)<\/a>.*<td align=\"right\" width=\"10%\">(.*)<\/td>.*\"changeup\">(.*)<\/span><\/td>.*\"changeup\">(.*)<\/span><\/td><td align=\"right\" width=\"20%\">(.*)<\/td>.*<td align=\"right\" width=\"15%\">(.*)<\/td>/", $text, $result);
include("config.php");
foreach($result as $row)
{
$q_auto = array();
foreach($row as $col)
$q_auto[] = "'".mysql_escape_string($col)."'";
$q_auto = '('.implode(',',$q_auto).')';
}
$sql = "INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES ('0','$q_auto[1]','$q_auto[2]','$q_auto[3]','$q_auto[4]','$q_auto[5]','$q_auto[6]')";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
echo ($sql); // выдает след. результат
?>
|
echo ($sql) =>
INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES ('0',''','0','5',':','4','2')error on request:
|
| |
|
|
|
|
|
|
|
для: Softic
(20.01.2010 в 19:40)
| | Быть может кто-нибудь что-то подскажет?? | |
|
|
|
|
|
|
|
для: Softic
(20.01.2010 в 19:40)
| | Ну вот. Вы заменили исполнение запроса на его вывод на экран.
Теперь можете отлаживать скрипт, добиваясь того, чтобы он создавал именно нужный Вам запрос.
А не абы какой. | |
|
|
|
|
|
|
|
для: Trianon
(21.01.2010 в 23:14)
| | Ну это то понятно что запрос у меня состоит непонятно из чего, а как разделить все значения массива меж собой и потом выстроить их через запятую в одну строку?
соединить в одну строку как вы уже сказали можно с помощью implode(), а вот как разделить все значения массива меж собой ?? | |
|
|
|
|
|
|
|
для: Softic
(21.01.2010 в 23:23)
| | >соединить в одну строку как вы уже сказали можно с помощью implode(), а вот как разделить все значения массива меж собой ??
В смысле - как?
В массиве все значения разделены.
Обратиться к каждому можно по его индексу - по номеру элемента в массиве.
>Ну это то понятно что запрос у меня состоит непонятно из чего, а как разделить все значения массива меж собой и потом выстроить их через запятую в одну строку?
Вы посмотрите на него - у Вас там значения разве не через запятую идут? | |
|
|
|
|
|
|
|
для: Trianon
(21.01.2010 в 23:58)
| | Хорошо, спрошу по другому, как мне осуществить запись этого многомерного массива за один проход, ечли обращаться к каждому элементу массива и подставлять их в запрос все работает, но с такими темпами легче в базу вбивать вручную.
Почитал форум, понял что делается это при помощи foreach(), но как?? | |
|
|
|
|
|
|
|
для: Softic
(22.01.2010 в 00:29)
| | Что я могу сказать... по ссылке ниже несколько тем с моими ответами, где в цикле формируется текст SQL-операторов INSERT.
http://softtime.ru/forum/srch.php?name=Trianon+foreach+insert&numberthemes=30&srchwhere=2&id_forum=3&logic=1 | |
|
|
|
|
|
|
|
для: Softic
(22.01.2010 в 00:29)
| | "Этот" многомерный массив для выбранной Вами цели стоило бы получить транспонированным.
У функции preg_match_all имеется такая возможность. | |
|
|
|
|
|
|
|
для: Trianon
(22.01.2010 в 09:27)
| |
<? php
include("config.php");
$table = 'auto_100';
function myInsert($table, $result)
{
$sql = "INSERT INTO `auto_100` ";
$sep = '(id, company, price, izmenenie, perc_izmenenie, volume, time';
$val = ") VALUES ";
foreach($result AS $key => $elem)
{
$sql .= "$sep `$key`";
$val .= "$sep '".mysql_escape_string($elem)."'";
$sep = ',';
}
$sql .= "$val)";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
}
?>
|
Никаких ошибок невыдает, но и в базу ничего непишеться, что я натворил? | |
|
|
|
|
|
|
|
для: Softic
(24.01.2010 в 00:43)
| | Пока сделал след. образом, все работает, но хотелось бы услышать слово профи, каким образом все таки лучше сделать формирование запроса в базу? незнаю правильно ли я выразился ...
<? php
include("config.php");
$kol_strok = count($result);
for($i=0;$i<$kol_strok;$i++)
{
$x1=$result[1][$i];
$x2=$result[2][$i];
$x3=$result[3][$i];
$x4=$result[4][$i];
$x5=$result[5][$i];
$x6=$result[6][$i];
$sql = "INSERT INTO auto_100 (id, company, price, izmenenie, perc_izmenenie, volume, time) VALUES ('0', '$x1', '$x2', '$x3', '$x4', '$x5', '$x6')";
if(!mysql_query($sql))
die("error on request:<br>$sql <br>".mysql_error());
}
?>
|
| |
|
|
|
|