Двойная переменная получает 0.0 вместо null [duplicate]

Это сообщение об ошибке отображается при возникновении ошибки в запросе, которая привела к сбою. Он проявится при использовании:

  • mysql_fetch_array / mysqli_fetch_array()
  • mysql_fetch_assoc() / mysqli_fetch_assoc()
  • mysql_num_rows() / mysqli_num_rows()

Примечание. Эта ошибка вызывает не , если на ваш запрос не влияет строка. Только запрос с недопустимым синтаксисом генерирует эту ошибку.

Шаги устранения неполадок

  • Убедитесь, что ваш сервер разработки настроен на отображение всех ошибок. Вы можете сделать это, разместив это в верхней части своих файлов или в вашем файле конфигурации: error_reporting(-1); . Если у вас есть какие-либо синтаксические ошибки, это укажет вам.
  • Используйте mysql_error() . mysql_error() сообщит о любых ошибках MySQL, возникающих при выполнении вашего запроса. Пример использования:
    mysql_connect($host, $username, $password) or die("cannot connect"); 
    mysql_select_db($db_name) or die("cannot select DB");
    
    $sql = "SELECT * FROM table_name";
    $result = mysql_query($sql);
    
    if (false === $result) {
        echo mysql_error();
    }
    
  • Запустите запрос из командной строки MySQL или с помощью инструмента, такого как phpMyAdmin . Если у вас есть синтаксическая ошибка в вашем запросе, это скажет вам, что это такое.
  • Убедитесь, что ваши кавычки верны. Отсутствие цитаты вокруг запроса или значения может привести к сбою запроса.
  • Убедитесь, что вы избегаете своих значений. Цитаты в вашем запросе могут привести к сбою запроса (а также оставить вас открытым для SQL-инъекций). Используйте mysql_real_escape_string() , чтобы избежать ввода.
  • Убедитесь, что вы не смешиваете функции mysqli_* и mysql_*. Они не то же самое и не могут использоваться вместе.

Другие советы

mysql_* функции не должны для нового кода. Они больше не поддерживаются, и сообщество приступило к процессу осушки . Вместо этого вы должны узнать о подготовленных операторах и использовать либо PDO , либо MySQLi . Если вы не можете решить, эта статья поможет выбрать. Если вы хотите узнать, вот хороший учебник PDO .

14
задан BalusC 13 November 2015 в 11:44
поделиться

1 ответ

Эта «функция» была результатом ошибки в EL, которая была введена в соответствии с Tomcat 6.0.16. В соответствии с главой 1.18.3 спецификации EL значение типа номера, которое является null, должно быть принудительно использовано до 0. До того, как Tomcat 6.0.16 было «неправильно» принудительно введено в пустую строку .

В конце концов, пустая строка была на самом деле гораздо более интуитивной, чем нуль. Ребята из Tomcat в Apache получили много жалоб на это исправление, поэтому они ввели новый параметр конфигурации в духе аргумента VM в соответствии с Tomcat 6.0.17, который отключил бы это исправление.

-Dorg.apache.el.parser.COERCE_TO_ZERO=false

ve, кстати, попросил изменить эту спецификацию, что он должен только принуждать пустые / нулевые примитивные типы к нулю и пустым / нулевым непримитивным java.lang.Number типам для пустой строки: JSP EL issue 184 . Они мало что с ней сделали, но вопрос, по крайней мере, получил много голосов. Кто знает ... Это поведение по крайней мере действительно раздражает, потому что оно неинтуитивно.

См. Также:

23
ответ дан Community 23 August 2018 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: