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 :: непонятная ошибка

 PHP.SU

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


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

> Описание: тема связана скомандой SELECT
yogeswar
Отправлено: 29 Марта, 2013 - 17:39:31
Post Id


Гость


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


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




Подскажите, не могу понять в чем ошибка.
В базе данных в таблице catalog есть четыре колонки: predmet1, predmet2, predmet3 и predmet4. Далее, существует массив $wasy(это для примера). Мне нужно составить массив, который получается из выборки таких строк таблицы catalog, чтобы хотя бы одна ячейка из predmet1, predmet2, predmet3 и predmet4 равнялась бы хотя бы одному элементу массива $wasy.
Далее я пишу такую программу:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $wasy = array('Федя','Гриша ','Иван Иванович','Матвей');
  3. $w=implode(', ',$wasy);
  4. //////////////////////////////////////////////////////////////
  5. $par = array();
  6. $abr = "SELECT * FROM catalog WHERE 'predmet1' IN ($w) or 'predmet2'
  7. IN ($w) or 'predmet3' IN ($w) or 'predmet4' IN ($w)";
  8. $result10 = mysql_query($abr) or die(mysql_error());
  9. while($roww = mysql_fetch_array($result10,MYSQLI_NUM)){
  10.         $par[] = $roww;        
  11.     }    
  12. ?>

Возникает ошибка:
PHP:
скопировать код в буфер обмена
  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 'Иванович, Матвей) or 'predmet2'
  2. IN (Федя, Гриша , Ива' at line 1

Если я в массиве вместо 'Иван Иванович' пишу просто 'Иван', то ошибки нет. Значит ошибка возникает с появлением пробела между 'Иван' и 'Иванович'.
Убедительная просьба esterio не лезть с советами, т. к. он подсказал мне вместо
$w=implode(', ',$wasy);
поставить такое выражение:
$w = array_map('sprintf', array_fill(0, count($wasy), '"%s"'), array_values($wasy));
У меня прежняя ошибка пропала, но возникла новая:
Unknown column 'Array' in 'where clause'
Я сначала не знал что значит эта ошибка, но подумал что с ней легко справлюсь, и написал esterio, что все в порядке.
Когда разобрался, то оказалось, что в команде CELECT не может восприниматься IN, т. к.
переменная $w не строка, а esterio подсунул мне массив.
Как сделать так, чтобы пробел был, но ошибка не возникала бы.
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Марта, 2013 - 17:46:37
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




И вот это подсказывал тот же пользователь esterio - строковые должны быть в кавычках (лапках).
 
 Top
DelphinPRO
Отправлено: 29 Марта, 2013 - 17:47:55
Post Id



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


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


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




кавычки потеряли в запросе


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
yogeswar
Отправлено: 29 Марта, 2013 - 17:48:11
Post Id


Гость


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


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




Спасибо, я попробую!
 
 Top
esterio
Отправлено: 29 Марта, 2013 - 17:48:32
Post Id



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


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


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




yogeswar
Ну раз не подсказивать, то не буду, разбирайтесь сами.
 
 Top
yogeswar
Отправлено: 29 Марта, 2013 - 17:52:50
Post Id


Гость


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


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




Просьба к esterio - не обижаться. Выдало ошибку и я на этом потерял много времени. Я по другим вопросам специалист и если у меня прокол, то я это просто учитываю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB