Intereting Posts
Наследование PHP и видимость защищенного элемента сортировать многомерный ассоциативный массив? Что такое синтаксис «break / continue $ var» (будет удален в PHP 5.4)? Каковы пределы функций множественного завивания PHP? Server Side Include – php Пользовательские URL-адреса – предоставление каждому пользователю URL-адреса Загрузка больших файлов через php-функцию readfile не работает Как я могу интегрировать phpunit с Hudson CI? Как я могу получить доступ к ConfigurationSettings с помощью облачной службы PHP на Windows Azure? Curl, следуйте по местоположению, но получите только заголовок нового места? Могу ли я визуализировать представление, не возвращая его в контроллере действий в zend framework 2? Сделайте возврат страницы PHP «304 Not Modified», если она не была изменена передача строковой переменной из php в JS-функцию Как я могу получить совпадения при использовании preg_replace в PHP? Как установить имя отправителя электронной почты через PHP

CakePHP – запрос возвращает пустое поле, если в нем есть специальный символ

У меня есть то, что я считаю обычным запросом в CakePHP – он работает для всех результатов, но когда в поле есть специальный символ, поле возвращается пустым. Он не сломается – и он по-прежнему дает мне остальные поля – это просто одно поле, пустое.

Пример:

$this->paginate = array( 'conditions' => array( 'Item.name != ' => '', ), ); $data = $this->paginate('Item'); 

Это вернет все элементы в моей таблице (в том числе тот, который, как я думал, имеет пустое поле имени), но когда я пытаюсь повторить имя на странице, он работает для каждого элемента, кроме одного со специальным символом (é) , Я изменил его на нормальный «e», и он выглядит хорошо.

Как я могу вернуть результаты, даже если у них есть специальный символ в их имени? Заранее спасибо!

Related of "CakePHP – запрос возвращает пустое поле, если в нем есть специальный символ"

Убедитесь, что ваша база данных использует правильную кодировку (в идеале, UTF-8), и вы настроили Cake для использования этой же кодировки в config/database.php :

 class DATABASE_CONFIG { public $default = array( ... 'encoding' => 'utf8' ); } 

Если у вас есть некорректное кодирование, ваше приложение, вероятно, уже хранило мусор в базе данных, поэтому убедитесь, что вы проверили правильные данные и / или новую базу данных.

Вероятно, это меньше проблем с Cake-спецификой и больше проблем с PHP / MySQL. (Другие уже создали кодировку, поэтому я пропущу это.)

Одиночные кавычки означают, что буквальная строка передается MySQL: 'Item.name != ' => ''

PHP (a la Cake), вероятно, разбирает эту строку буквально. На самом деле, возможно, он даже разгладит его так:

 "Item.name != " 

(обратите внимание, что после операнда ничего нет, и если он будет последним в SQL-запросе, запрос не будет ошибкой, он, вероятно, все равно будет работать!)

Когда вы предназначались для тестирования:

 "Item.name != ''" 

(обратите внимание на точные одинарные кавычки, которые теперь включены в строку)

Однако, поскольку вы не получаете ошибку – и остальная часть данных тянет! – вы, вероятно, хотите отредактировать этот оператор, потому что ваша проблема скорее синтаксис.

 'Item.name IS NOT NULL' 'Item.name <> ' => '' 'Item.name IS NOT' => '' 

Попробуй попробовать.

http://dev.mysql.com/doc/refman/5.6/en/comparison-operators.html, описывающий IS NOT NULL vs. IS NOT (bool) vs <> и! = (не равно).

HTH 🙂