Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка в SQL , Warning: mysql_error() expects parameter 1 to be resource, null given in

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Помогите решить проблему при парсинге
Hazrat
Отправлено: 30 Мая, 2012 - 20:33:06
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




есть функция , которая парсит xml файл , в котором 15000 товаров, нужно их завести в базу данных, Все вроде нормально , но когда доходит до 4000 строки выходит ошибка типо
Warning: mysql_error() expects parameter 1 to be resource, null given in W:\html\meridian\www\modules\main\control.php on line 60

Сама функция
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function PARSER_XML () {
  4.     $price_xml = 'files/price.xml';      # Документ в Формате XML для Парсинга
  5.    
  6.     $xml = simplexml_load_file($price_xml); # Инициируем обьект SimpleXML
  7.    
  8.     define('MONEY',$xml->Currency); # Курс Валюты в данном XML Документе
  9.    define('DATE',$xml->Date);      # Дата Создания XML файла , Актуальность ее
  10.    
  11.     define ('NUM_CATALOG', $xml->G1->count()); # Число каталогов с тегом G1 т.е самых начальных это Комплектуюшие ноутбуки и т.д.
  12.    
  13.     for ($i = 0; $i < NUM_CATALOG; $i++ ) {
  14.         $root = $xml->G1[$i]; # Корневой элемент. Как бы ссылка для доступа к дочерним элементам
  15.        $G1_MainGroup = $root->MainGroup; # тег MainGroup -  это тег содержаший название данной категории (Категория КОМПЛЕКТУЮЩИЕ ДЛЯ КОМПЬЮТЕРОВ , НОУТБУКИ )
  16.        
  17.         $root_G2 = $root->G2; # Дочерний Элемент G2  
  18.        $root_G2_num =  $root_G2->count(); # Число дочерних Элементов в G2
  19.        
  20.        
  21.         for ( $y = 0 ; $y < $root_G2_num ; $y++ ){
  22.            
  23.              $G2 = $root->G2[$y]; # Корневой Тег для доступа к под каталогам
  24.             $G2_Group = $G2->Group; # Тег Goup - это тег названия под каталога Для Товара тоже самое что и G1->G2->Group 'Видеокарты'
  25.             $root_G3 = $root_G2->G3; # переменная для перебора дочерних элементов G3 , Т.е последний каталог
  26.             $num_G3 =  $G2->G3->count(); # Количество Элементов Подгруппы G1->G2->G3->SubGroup
  27.            
  28.             for ($e = 0; $e < $num_G3; $e++) {
  29.                
  30.                 @$G3_SubGroup = $G2->G3[$e]->SubGroup; # Переменная Храняшая Тег группы товаров G1->G2->G3->SubGroup
  31.                
  32.                 $num_item = $G2->G3[$e]->Item->count(); # Количество Товаров G1->G2->G3->Item
  33.            
  34.                 for ($q = 0; $q < $num_item; $q++ ){
  35.                    
  36.                     $Item = $G2->G3[$e]->Item[$q]; # Переменная Содержашая Элементы
  37.                    #$cURL = cURL_PARSER($Item->No);
  38.                    
  39.                     #$parser_info = PARSER_INFO($cURL); скачиваем информацию с сервера
  40.                    #$parser_img = PARSER_IMG($cURL); и картинки
  41.                  
  42.                     $sql = "INSERT INTO `tovar` ( `MainGroup`, `Group`, `SubGroup`, `No`, `Name`, `Brand`, `PartNo`, `Price`, `Avail`)
  43.                                       VALUES   ( '$G1_MainGroup', '$G2_Group', '$G3_SubGroup', '$Item->No', '$Item->Name', '$Item->Brand', '$Item->PartNo', '$Item->Price', '$Item->Avail');" ;
  44.                    
  45.                     $res = DB_MYSQl($sql); # Отпраляем Запрос                  
  46.                }
  47.             }
  48.            
  49.         }
  50.        
  51.        
  52.          
  53.      
  54.          
  55.        
  56.          
  57.     }
  58.    
  59.  }
  60.  
  61.  


В чем может быть ошибка? вроде бы до 4000 нормально заводит и под конец ошибка


-----
Я мирный человек! Мне не нужна Война! Мне нужен МИР! желательно весь...
 
 Top
CrazyOne
Отправлено: 31 Мая, 2012 - 15:06:32
Post Id


Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Может ограничение mysql...Раньше не слыхал о такой проблеме, если найдешь решение напиши сюда.
Как временное решение: попробуй разделить один большой запрос на 4 маленьких(как раз выйдет меньше 4к каждый).

(Отредактировано автором: 31 Мая, 2012 - 15:07:25)

 
 Top
sKaa
Отправлено: 31 Мая, 2012 - 15:21:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


А можно взглянуть на : W:\html\meridian\www\modules\main\control.php on line 60 ???
Я давно уже не пользовался функциями mysql_*, но убежден, что ссылку на подключение к базе нужно передать во что-то, что находится тут : W:\html\meridian\www\modules\main\control.php
 
 Top
Мелкий Супермодератор
Отправлено: 31 Мая, 2012 - 15:30:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




XML может содержать смертельные для вас кавычки. Говоря иначе - где экранирование?


-----
PostgreSQL DBA
 
 Top
Medallion
Отправлено: 31 Мая, 2012 - 19:05:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Лишняя точка с запятой в этой строке
'$Item->Price', '$Item->Avail');" ;
 
 Top
911fnn
Отправлено: 22 Февраля, 2013 - 13:46:51
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Возможно кто то сможет подсказать в чем ошибка, строки с ошибками выделены специально жирным. Соединение с базой проходит.

выдает ошибки:

Warning: mysql_error() expects parameter 1 to be resource, null given in Z:\home\programming.ua\www\blocks\db.php on line 42

Warning: mysql_error() expects parameter 1 to be resource, null given in Z:\home\programming.ua\www\blocks\db.php on line 42
:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\programming.ua\www\blocks\db.php on line 30

весь код:

<?

function db_connect()
{
$host = 'localhost';
$user = 'programming_user';
$password = 'programming';
$db = 'db_programming';

$connection = mysql_connect("$host","$user","$password");
mysql_select_db("mydb");
mysql_query('SET NAMES utf8');
mysql_query ('SET CHARACTER SET utf8');
if (!$connection || !mysql_select_db($db,$connection))
{
return false;
}
return $connection;
}

if(db_connect())
{
echo 'ok';
}

function db_result_to_array($result)
{
$res_array = array();
$count = 0;
while($row = mysql_fetch_array($result))
{
$res_array[$count] = $row;
$count++;
}
return $res_array;
}

function get_manu()
{
db_connect();
$query = "SELECT * FROM manu ORDER BY id DESC";
echo mysql_error($connection) . ": " . mysql_error($connection) . "\n";
$result = mysql_query($guery);
$result = db_result_to_array($result);
return $result;

}


function get_article()
{
db_connect();
$query = "SELECT * FROM article ORDER BY id DESC";
echo mysql_error($connection) . ": " . mysql_error($connection) . "\n";
$result = mysql_query($guery);
$result = db_result_to_array($result);
return $result;

}

?>
 
 Top
DelphinPRO
Отправлено: 22 Февраля, 2013 - 14:23:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




т.е. то, что написано в тексте ошибки вы не понимаете?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
911fnn
Отправлено: 22 Февраля, 2013 - 15:21:42
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
т.е. то, что написано в тексте ошибки вы не понимаете?


да, я не понимаю что за ошибка "Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\programming.ua\www\blocks\db.php on line 30" и как ее исправить.
 
 Top
esterio
Отправлено: 22 Февраля, 2013 - 16:04:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ок попробую обяснить
Смотрим документацию php.net
Цитата:
mysql_query — Посылает запрос MySQL
mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.
mysql_fetch_assoc ( resource $result )

mysql_fetch_array() expects parameter 1 to be resource,
given
Чуствуете связь. query возвращет FALSE, и Вы его передаете fetch_assoc, который в свою очередь должен принимать ресурс. От и не совпадение типов.

А ввобщем то у Вас НЕТУ ПОДКЛЮЧЕНИЯ К БАЗЕ.

PHP:
скопировать код в буфер обмена
  1. $connection = mysql_connect("$host","$user","$password");

ЧТО ЗА "$host". Я уже и не знаю где все уроки беруть. Лапки самая большая ошибка. Зачем то переменную в лапках писать. Чесно ен понимаю. Скажите где взяли приме, а то я незнаю даже как назвать автора.
 
 Top
imya
Отправлено: 22 Февраля, 2013 - 16:04:54
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




А переводчиком воспользоваться?
Сказано, что в функции параметр 1 должен быть ресурсом, а передаёт null.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
DelphinPRO
Отправлено: 22 Февраля, 2013 - 16:43:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




911fnn пишет:
да, я не понимаю что за ошибка
трудно вам придется на стезе программиста, без понимания английского Улыбка

на вопрос уже ответили, добавить нечего )


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
911fnn
Отправлено: 22 Февраля, 2013 - 17:21:54
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




esterio пишет:
Ок попробую обяснить
Смотрим документацию php.net
Цитата:
mysql_query — Посылает запрос MySQL
mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.
mysql_fetch_assoc ( resource $result )

mysql_fetch_array() expects parameter 1 to be resource,
given
Чуствуете связь. query возвращет FALSE, и Вы его передаете fetch_assoc, который в свою очередь должен принимать ресурс. От и не совпадение типов.

А ввобщем то у Вас НЕТУ ПОДКЛЮЧЕНИЯ К БАЗЕ.

PHP:
скопировать код в буфер обмена
  1. $connection = mysql_connect("$host","$user","$password");

ЧТО ЗА "$host". Я уже и не знаю где все уроки беруть. Лапки самая большая ошибка. Зачем то переменную в лапках писать. Чесно ен понимаю. Скажите где взяли приме, а то я незнаю даже как назвать автора.


спасибо за ответ.
подключение к базе исправлено, проверино - подключается теперь.
ошибка же пока осталась та же. как можно сделать что бы типы совпадали?
 
 Top
esterio
Отправлено: 22 Февраля, 2013 - 17:24:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





Самое простое
 
 Top
911fnn
Отправлено: 22 Февраля, 2013 - 17:31:15
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




imya пишет:
А переводчиком воспользоваться?
Сказано, что в функции параметр 1 должен быть ресурсом, а передаёт null.



вопрос - ка передавать не ноль?
 
 Top
esterio
Отправлено: 22 Февраля, 2013 - 17:33:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




null не равно 0. Савсем разние значение.
Заглянуть на http://php.net религия не позволяет?
http://www.php.net/manual/ru/lan...e.types.null.php
Цитата:

Специальное значение NULL представляет собой переменную без значения. NULL - это единственно возможное значение типа null.

Переменная считается null, если:

ей была присвоена константа NULL.

ей еще не было присвоено никакого значения.

она была удалена с помощью unset().
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB