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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: csv php mysql
 
 автор: Onik   (07.12.2009 в 13:03)   письмо автору
 
 

Уважаемые очень нужна помощь,
есть код
<?php
  $f 
file("board.csv");
  
$sql "";
  for (
$i 0$i count($f); $i++)
  {
    
$sql .= "(";
    
$array explode("';"$f[$i]);
    for (
$j 0$j count($array); $j++)
    {
      if (
$j <= count($array)-2)
        
$sql .= "`{".trim($array[$j])."}`, ";
      else
        
$sql .= "`{".trim($array[$j])."}`";
    }
    if (
$i <= count($f)-2)
      
$sql .= "), ";
    else
      
$sql .= ")";
  }

  require(
"sql.class.php");
  
$my = new class_mysql;
  
$my->sql_connect();
  echo 
$my->sql_query "insert into `jb_board`
 (`id`, `id_category`, `abuse`, `type`, `autor`, `title`, 
`email`, `city`, `url`, `click`, `contacts`, `text`, 
`hits`, `old_mess`, `checked`, `checkbox_top`, `top_time`, 
`send_notice_vip_sms`, `checkbox_select`, `select_time`, 
`send_notice_select_sms`, `keywords`, `send_notice_day`, 
`time_delete`, `pass`, `time_add`, `date_add`) values "
.$sql;
  
$my->sql_execute();
  
$my->sql_close();
  unset(
$my);

но при записи если в строчке встречается ; обрывает все и портит как быть??((

  Ответить  
 
 автор: Trianon   (07.12.2009 в 13:48)   письмо автору
 
   для: Onik   (07.12.2009 в 13:03)
 

вообще-то есть стандартная функция fgetcsv()
Формат ComaSeparatedValues совсем не такой простой, как кажется на первый взгляд.

PS. Да. Непонятный код следует выкидывать, а не применять.

  Ответить  
 
 автор: onik   (07.12.2009 в 16:22)   письмо автору
 
   для: Trianon   (07.12.2009 в 13:48)
 

как поставить кодировку?

  Ответить  
 
 автор: onik   (07.12.2009 в 19:48)   письмо автору
 
   для: onik   (07.12.2009 в 16:22)
 

$handle = fopen("board.csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{

$dt = $data[2];
$dt = str_replace(",",".",$dt);

$sql = "INSERT INTO `jb_board`
VALUES ('{$data[0]}', '{$data[1]}', '{$data[2]}', '{$data[3]}','{$data[4]}','{$data[5]}','{$data[6]}','{$data[7]}','{$data[8]}','{$data[9]}','{$data[10]}','{$data[11]}','{$data[12]}','{$data[13]}','{$data[14]}','{$data[15]}','{$data[16]}','{$data[17]}','{$data[18]}','{$data[19]}','{$data[20]}','{$data[21]}','{$data[22]}','{$data[23]}','{$data[24]}','{$data[25]}','{$data[26]}','{$data[27]}'
)";
$qw = mysql_query($sql);
if($qw)
    {
    @mysql_query("SET NAMES cp1251");
        echo 'Импортировано:'.$sql.'<br />';
    }
    else echo mysql_error()."<br />";

}
fclose($handle);


вот такой код
как бы работает нО в текстах есть символы и они прерывают запрос, как сделать что бы не прерывались ковычки и прочие нечести?

  Ответить  
 
 автор: Trianon   (07.12.2009 в 20:21)   письмо автору
 
   для: onik   (07.12.2009 в 19:48)
 

SET NAMES нужно убрать в район установления соединения с сервером и выбора БД.

А текстовые данные следует экранировать.
mysql_real_escape_string()

  Ответить  
 
 автор: onik   (08.12.2009 в 04:16)   письмо автору
 
   для: Trianon   (07.12.2009 в 20:21)
 

$sql = "INSERT INTO `jb_board`
VALUES (".mysql_real_escape_string($data[0]).", ".mysql_real_escape_string($data[1]).", ".mysql_real_escape_string($data[2]).", ".mysql_real_escape_string($data[3]).",".mysql_real_escape_string($data[4]).",".mysql_real_escape_string($data[5]).",".mysql_real_escape_string($data[6]).",".mysql_real_escape_string($data[7]).",".mysql_real_escape_string($data[8]).",".mysql_real_escape_string($data[9]).",".mysql_real_escape_string($data[10]).",".mysql_real_escape_string($data[11]).",".mysql_real_escape_string($data[12]).",".mysql_real_escape_string($data[13]).",".mysql_real_escape_string($data[14]).",".mysql_real_escape_string($data[15]).",".mysql_real_escape_string($data[16]).",".mysql_real_escape_string($data[17]).",".mysql_real_escape_string($data[18]).",".mysql_real_escape_string($data[19]).",".mysql_real_escape_string($data[20]).",".mysql_real_escape_string($data[21]).",".mysql_real_escape_string($data[22]).",".mysql_real_escape_string($data[23]).",".mysql_real_escape_string($data[24]).",".mysql_real_escape_string($data[25]).",".mysql_real_escape_string($data[26]).",".mysql_real_escape_string($data[27])."
).";

так?выдает одни ошибки(( как правильнее будет помогите плизз уже ни могу((

  Ответить  
 
 автор: Trianon   (08.12.2009 в 12:06)   письмо автору
 
   для: onik   (08.12.2009 в 04:16)
 

Вы не уже не можете.
Вы еще не можете.
Потому что язык перед применением надо учить, а не списывать с чего попало.
А чтобы разобраться, почему ошибки, запрос, который в $sql , нужно не исполнять сперва,
а выводить на экран, и изучать внимательно, чего Ваш скрипт там понасоздавал.
Сообщения об ошибках, кстати, тоже неплохо изучить и понять.

  Ответить  
Rambler's Top100
вверх

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