Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> is not a valid MySQL result, выдает ошибку,только в IE 
V
    Опции темы
kelario
Дата 6.2.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Добрый вечер!

У меня есть скрипт,который абсолютно нормально работает везде,кроме ИЕ6.

В IE6 вылетает следущее:

Код

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in 
F:\Program Files\Apache Software Foundation\Apache2.2\htdocs\search\search.php on line 55



Понятно,что HTML и CSS ИЕ6  понимает по своему,но при чем тут MySql ?

Сама строчка 55 :

Код

while ($line=mysql_fetch_array($search, MYSQL_NUM)) {



и все остальные действия с sql в правильном порядке :
Код

 $con = mysql_connect('localhost', 'usr', 'pass');
   if (!$con) {
      die("Cant connect to the DataBase");
   }else {
      mysql_select_db('author',$con);
код без обращения к mysql
 $query = 'SELECT * FROM `shops` WHERE ' . implode('AND', $fields) . '';
$search = (mysql_query($query,$con)) ;

while ($line=mysql_fetch_array($search, MYSQL_NUM))
{
код без обращения к mysql
}
mysql_close($con); 




Спасибо!! 

Это сообщение отредактировал(а) kelario - 6.2.2010, 23:33
PM MAIL   Вверх
Veve
Дата 6.2.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



Чисто визуально, есть два странных момента:

Код

$search = (mysql_query($query,$con)) ;


Скобки непонятно зачем. Хотя думаю это некритично.

А вот второй более непонятный момент. И скорее всего из-за него ошибка.

Код

while ($line=mysql_fetch_array($search, MYSQL_NUM))
mysql_close($con); 
}


Вы в цикле закрываете соединение с базой: mysql_close($con)

Это сообщение отредактировал(а) Veve - 6.2.2010, 23:27
PM MAIL ICQ Skype MSN   Вверх
kelario
Дата 6.2.2010, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Спасибо за ответ,но mysql_close находиться за пределами цикла.Иначе бы не работало везде smile 
PM MAIL   Вверх
IgorIV
Дата 6.2.2010, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



А echo $query - не пробовал?
Скорее всего браузер не отправляет данные.
PM MAIL   Вверх
Simpliest
Дата 7.2.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



плюс данный код
Цитата(kelario @  6.2.2010,  21:53 Найти цитируемый пост)
$query = 'SELECT * FROM `shops` WHERE ' . implode('AND', $fields) . '';

должен выдать нечто крайне странное после WHERE smile


--------------------
user posted image
PM   Вверх
TName
Дата 7.2.2010, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 16.3.2008

Репутация: нет
Всего: нет



Согласен с пердыдущим оратором. И содержимое $fields - в студию.
Есть предположение, что там есть данные из $_GET, который от IE6 может быть неадекватным.
PM MAIL   Вверх
kelario
Дата 7.2.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

А echo $query - не пробовал?


Resource ID#4 smile

mysql_error выдает 
Цитата

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 '' at line 1


Цитата

И содержимое $fields - в студию.



Код

$fields = array();
if( $name != '' )
    $fields[] = '`name` = "' . mysql_real_escape_string($name) . '"';
if( $category != '' )
    $fields[] = '`category` = "' . mysql_real_escape_string($category) . '"';   

if( $country != '' )
    $fields[] = '`country` = "' . mysql_real_escape_string($country) . '"';
if( $city != '' )
    $fields[] = '`city` = "' . mysql_real_escape_string($city) . '"';

 
 $query = 'SELECT * FROM `shops` WHERE ' . implode('AND', $fields) . '';


PM MAIL   Вверх
Photon
Дата 7.2.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



А откуда берутся всякие $name, $category и т.п.?
Если это приходит из браузера, то для начала стоит попробовать использовать $_REQUEST['name'] и т.п.


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
TName
Дата 7.2.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 16.3.2008

Репутация: нет
Всего: нет



на мой скромный взгляд это вобще должно выглядеть так:
Код

$fields = array();
if( $name != '' )
    $fields[] = "name = '" . $name . "'";
if( $category != '' )
    $fields[] = "`category` = '" . $category . "'";   

if( $country != '' )
    $fields[] = "`country` = '" . $country . "'";
if( $city != '' )
    $fields[] = "`city` = '" . $city . "'";

 
 $query = "SELECT * FROM `shops` WHERE " . implode(' AND ', $fields);
$query = mysql_real_escape_string($query);


Обрати внимание на пробелы вокруг AND в запросе, отсутсвие добавления пустой строки в конце запроса (зачем оно?) и то, что вся строка в двойных ковычках, а строковые переменные в одинарных (хотя это не принципиально, по-моему).
Если предполагается наличие спец. символов во входных данных, то к переменным можно addslashes() применить.
PM MAIL   Вверх
kelario
Дата 7.2.2010, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

А откуда берутся всякие $name, $category и т.п.? 


Да,из броузера.

Код

$name= ($_POST['name']);
   $category = ($_POST['category']);
   $country = ($_POST['country']);
     $city = ($_POST['city']);
   


Поменял на $_REQUEST ,не помогает :(
PM MAIL   Вверх
IgorIV
Дата 7.2.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



kelario, бери 2 браузера и сравнивай.
var_dump($_POST);
var_dump($fields);
echo $query; // здесь все-таки должна быть строка
PM MAIL   Вверх
kelario
Дата 7.2.2010, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

kelario, бери 2 браузера и сравнивай.


IE6:

Код

array(2) { ["category_x"]=> string(2) "54" ["category_y"]=> string(2) "46" } array(0) { } 


Firefox:

Код

array(3) { ["category_x"]=>  string(2) "76" ["category_y"]=>  string(2) "89" ["category"]=> 
 string(9) "education" } array(1) { [0]=>  string(24) "`category` = "education"" }


Цитата

на мой скромный взгляд это вобще должно выглядеть так:


Код

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 '\'education\''



Теперь файрфоксу тоже не нравиться smile




Это сообщение отредактировал(а) kelario - 7.2.2010, 12:32
PM MAIL   Вверх
IgorIV
Дата 7.2.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



kelario, ну и?
Ты видишь что у тебя в IE нет переменной $fields? IE не посылает category.
PM MAIL   Вверх
kelario
Дата 7.2.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Цитата

Ты видишь что у тебя в IE нет переменной $fields? IE не посылает category. 


Да,заметил.Но какой синтаксис тогда правильный ?(или дело вообще не в этом ? )  Вариант Т-нейма к сожалению не работает.
PM MAIL   Вверх
TName
Дата 7.2.2010, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 16.3.2008

Репутация: нет
Всего: нет



О, Боги! Иногда руки опускаются....
Вот по развитию диалога создается впечатление, что здесь онлайн дебагер.
Ан, нет! Сказано: браузеры (а тем более IE6) передают переменные из формы по-разному. Ищи косяки во входных данных. Проблема с запросом? Проверь синтаксис (правила однозначные). Каждый шаг мониторь. Вывести echo $var; не сложно или var_dump($var).

Получив здесь готовый ответ, ты не получишь опыта. А времени на объяснение ситуации потратишь столько же, сколько на самостоятельный поиск и работу.

Аналогий и примеров приведено, IMHO, достаточно.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.