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

Форум MySQL

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

 

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

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

тема: Помогите пожалуйста с MySql разобраться и найти ошибку
 
 автор: добряк   (19.01.2014 в 12:16)   письмо автору
 
 

Надо подсчитать количество при полнотекстовом поиске

Отправляю запрос локально через phpMyAdmin все работает нормально,
а если вставляю на сайт локально и отправляю запрос php функциями - выдает ошибки
На phpMyAdmin например запрос

SELECT COUNT( * ) FROM  `product` WHERE MATCH (`name`) AGAINST ('audio CD')

На сайте

  $link = @mysql_connect('localhost', 'root', '')  or die('Не удалось соединиться: ' . mysql_error());
  @mysql_select_db('baza')   or die('Не удалось выбрать базу данных');

 $q_find_count  ='SELECT COUNT( * )  FROM `product` WHERE MATCH (`name`) AGAINST ("'.$val.'") ' 
  $res_find_count = @mysql_query($q_find_count , 0); 

На сайте Результата нет. (в обычном запросе, WHERE `поле`=' значение' - нормально выполняет всегда)


Если использовать следующую функцию, то выполняет подсчет, но очень медленно, секунд 10

$res_find_count = mysql_num_rows($res_find_count);

  Ответить  
 
 автор: Лена   (22.01.2014 в 01:30)   письмо автору
 
   для: добряк   (19.01.2014 в 12:16)
 


$res_find_count = mysql_query($q_find_count , $link);  


Второй параметр mysql_query() - указатель открытого соединения с БД, у вас это $link. Можно и не писать его, тогда берется последнее открытое соединение.


Второе вы вообще не то делаете.
Вы через COUNT получили количество записей, соответствующих условию, а после mysql_num_rows считаете, сколько рядов у вас пришло после запроса к БД, у вас один ряд же получен - зачем считать один ряд?

Через LIKE не пробовали находить соответствия? И при подсчете, по-моему, можно использовать SQL_CALC_FOUND_ROWS

  Ответить  
 
 автор: psychomc   (24.01.2014 в 00:51)   письмо автору
 
   для: Лена   (22.01.2014 в 01:30)
 

SQL_CALC_FOUND_ROWS не то. то есть то, но только тогда, когда нужно определить количество в существующем запросе на выборку. здесь же определить количество само условие

  Ответить  
 
 автор: добряк   (26.01.2014 в 12:56)   письмо автору
 
   для: psychomc   (24.01.2014 в 00:51)
 

SQL_CALC_FOUND_ROWS.
Не получается. Не пойму как прописать правильно, на какую документацию ориентироватся,
в php.net нет такой функции

  Ответить  
 
 автор: psychomc   (29.01.2014 в 14:56)   письмо автору
 
   для: добряк   (26.01.2014 в 12:56)
 

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html
http://stackoverflow.com/questions/3453809/how-to-use-mysql-found-rows-in-php

  Ответить  
 
 автор: moonfox   (23.01.2014 в 23:52)   письмо автору
 
   для: добряк   (19.01.2014 в 12:16)
 

заканчивайте приобщаться к mysql
начинайте к mysqli

  Ответить  
 
 автор: psychomc   (24.01.2014 в 00:46)   письмо автору
 
   для: moonfox   (23.01.2014 в 23:52)
 

тогда уж к PDO.

  Ответить  
 
 автор: добряк   (29.01.2014 в 01:35)   письмо автору
 
   для: psychomc   (24.01.2014 в 00:46)
 

PDO есть какие-нибуть улучшенные технические, скоростные характеристики, или просто язык дает новые возможности

  Ответить  
 
 автор: Саня   (29.01.2014 в 14:41)   письмо автору
 
   для: добряк   (29.01.2014 в 01:35)
 

Есть отдельная тема с обсуждением этого вопроса.

  Ответить  
 
 автор: psychomc   (24.01.2014 в 01:43)   письмо автору
 
   для: добряк   (19.01.2014 в 12:16)
 

попробуйте $count = mysql_result($res_find_count, 0)

  Ответить  
 
 автор: добряк   (26.01.2014 в 12:54)   письмо автору
 
   для: psychomc   (24.01.2014 в 01:43)
 

Не работатет.
Не понятно. Почему в phpMyAdmin запрос работает
'SELECT COUNT( * )  FROM `product` WHERE MATCH (`name`) AGAINST ("'.$val.'") '

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

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