2012-04-04 2 views
2

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

Когда я передаю это php и попробую вставить результаты в столбцы типа integer, если все переключатели отмечены галочкой, проблем нет. Однако, если есть какие-либо неустановленным кнопки я получаю следующее сообщение об ошибке:

Query failed: ERROR: invalid input syntax for integer: "NaN" 

Я понимаю, что это связано с тем, что мои целые столбцы не могут обрабатывать строки, но я не знаю, что Лучшая стратегия для этого. Должен ли я проверять сторону javascript или есть ли какой-либо подход в php, где я должен проверять, что значения не равны нулю?

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

$query=pg_query_params($connection, 'INSERT INTO tracking.postsurvey(answer1) values($1)', array($answer1)); 
+0

'NaN' является Javascript вещь. Независимо от того, что вы делаете в Javascript, вы получаете значения, которые передаются в NaN вместо null. PHP не волнует, являются ли параметры нулевыми, и ваша база данных, вероятно, тоже не работает. – AndrewR

ответ

3

О решении будет изменить этот запрос на:

'INSERT INTO tracking.postsurvey(answer1) values(nullif($1, 'NaN'))' 

http://www.postgresql.org/docs/current/interactive/functions-conditional.html#FUNCTIONS-NULLIF

+0

Хмм, я не могу заставить это работать. '' Nan'' разрывает синтаксис цитаты, а '' Nan "' выдает сообщение об ошибке 'ERROR: столбец " NaN " не существует'. – djq

+2

Упс. Поскольку вы используете строку с кавычками, вам нужно удвоить кавычки вокруг NaN. Не символ двойной кавычки - два апострофа. Или вы могли бы использовать котировки доллара. Итак: «INSERT INTO tracking.postsurvey (answer1) values ​​(nullif ($ 1, '' NaN '')) 'или' INSERT INTO tracking.postsurvey (answer1) values ​​(nullif ($ 1, $$ NaN $$)) ' – kgrittn

Смежные вопросы