Intereting Posts
Zend Framework, передавая переменные для просмотра Как установить драйвер PHP MongoDB для XAMPP на OSX? PHP, как я могу проверить, является ли файл mp3 или файлом изображения? Шифрование RSA. Создайте шифрованный текст в PHP и расшифруйте его в Javascript Laravel – возвращает json вместе с кодом статуса http fb_exchange_token для PHP работает только после того, как пользователь удалит приложение На этой веб-странице есть проблема PHP с перенаправлением? Не можете вызвать закрытие, завернутое в закрытие? Загрузите файлы в php Как переопределить систему электронной почты Sylius Одновременное использование переключателей и выпадающего селектора для вариантов продукта Переопределить Bootstrap CSS в Yii2 как преобразовать значения массива из строки в int? Уведомления IOS GCM push не получены в фоновом режиме с помощью PHP-отправителя и Swift Каково значение URL-адреса приложения в laravel 5

Запрос MySQL работает в phpmyadmin, но строки не возвращаются в наборе результатов PHP

У меня есть следующий запрос MySQL:

SELECT SQL_CALC_FOUND_ROWS p.* FROM product AS p LEFT JOIN productCategory AS c ON FIND_IN_SET(c.id, REPLACE(TRIM(p.categories), ' ',',')) WHERE ( c.id IS NULL OR c.status = 'D' OR p.categories IS NULL OR TRIM(p.categories) = '' ) AND p.deprecated = 'N' LIMIT 0,30 

Этот запрос состоит в том, чтобы забрать продукты, которые:

  • p.categories то задано в столбце p.categories , но строка в таблице productCategory не существует
  • У вас есть строка productCategory , но статус в строке productCategory равен 'D'
  • Нечего устанавливать в столбце p.categories

p.categories – это строка с числовыми значениями, разделенными пробелом, представляющими идентификаторы в таблице productCategory . Не лучший дизайн, предоставленный, но мне была дана эта задача, поэтому нам нужен способ сделать это.

В PHP-коде этот запрос выполняется непосредственно после этого:

 SELECT FOUND_ROWS() as count 

Когда выполняется из phpmyadmin, я возвращаю тысячи строк, и когда я добавляю второй запрос, я получаю значение количества правильного количества строк. Когда я выполняю тот же самый первый запрос через mysqli_query (), я не получаю никаких строк вообще, а следующий запрос возвращает число 1.

Оба phpmyadmin и мой PHP-код подключаются к одной базе данных.

Кто-нибудь может понять, что происходит?

Обновить:

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

Вы должны выполнить первый запрос только для того, чтобы получить набор записей, возвращаемый PHP. Вы можете рассчитывать на свой PHP после его появления. Вы не должны передавать конкатенированные запросы от PHP к MySQL.

т.е.

 $result = mysql_query($query); $recordCount = mysql_num_rows($result); 

По какой-то причине изменение первой строки запроса:

 SELECT SQL_CALC_FOUND_ROWS p.* 

Для того, чтобы:

 SELECT SQL_CALC_FOUND_ROWS p.id 

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