Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проблема с записью в БД

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-46] 

 
 автор: Softic   (24.01.2010 в 01:19)   письмо автору
 
   для: 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());  
}
?>

  Ответить  
 
 автор: Softic   (24.01.2010 в 00:43)   письмо автору
 
   для: 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());  

?>


Никаких ошибок невыдает, но и в базу ничего непишеться, что я натворил?

  Ответить  
 
 автор: Trianon   (22.01.2010 в 09:27)   письмо автору
 
   для: Softic   (22.01.2010 в 00:29)
 

"Этот" многомерный массив для выбранной Вами цели стоило бы получить транспонированным.
У функции preg_match_all имеется такая возможность.

  Ответить  
 
 автор: Trianon   (22.01.2010 в 01:36)   письмо автору
 
   для: 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)   письмо автору
 
   для: Trianon   (21.01.2010 в 23:58)
 

Хорошо, спрошу по другому, как мне осуществить запись этого многомерного массива за один проход, ечли обращаться к каждому элементу массива и подставлять их в запрос все работает, но с такими темпами легче в базу вбивать вручную.
Почитал форум, понял что делается это при помощи foreach(), но как??

  Ответить  
 
 автор: Trianon   (21.01.2010 в 23:58)   письмо автору
 
   для: Softic   (21.01.2010 в 23:23)
 

>соединить в одну строку как вы уже сказали можно с помощью implode(), а вот как разделить все значения массива меж собой ??

В смысле - как?
В массиве все значения разделены.
Обратиться к каждому можно по его индексу - по номеру элемента в массиве.

>Ну это то понятно что запрос у меня состоит непонятно из чего, а как разделить все значения массива меж собой и потом выстроить их через запятую в одну строку?

Вы посмотрите на него - у Вас там значения разве не через запятую идут?

  Ответить  
 
 автор: Softic   (21.01.2010 в 23:23)   письмо автору
 
   для: Trianon   (21.01.2010 в 23:14)
 

Ну это то понятно что запрос у меня состоит непонятно из чего, а как разделить все значения массива меж собой и потом выстроить их через запятую в одну строку?
соединить в одну строку как вы уже сказали можно с помощью implode(), а вот как разделить все значения массива меж собой ??

  Ответить  
 
 автор: Trianon   (21.01.2010 в 23:14)   письмо автору
 
   для: Softic   (20.01.2010 в 19:40)
 

Ну вот. Вы заменили исполнение запроса на его вывод на экран.
Теперь можете отлаживать скрипт, добиваясь того, чтобы он создавал именно нужный Вам запрос.
А не абы какой.

  Ответить  
 
 автор: Softic   (21.01.2010 в 20:42)   письмо автору
 
   для: Softic   (20.01.2010 в 19:40)
 

Быть может кто-нибудь что-то подскажет??

  Ответить  
 
 автор: Softic   (20.01.2010 в 19:40)   письмо автору
 
   для: 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:

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-46] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования