проблема тестирования переменных asp mysql - PullRequest
1 голос
/ 24 декабря 2008

У меня проблема, которая только началась, после того, как я переустановил сервер моего сайта.

В прошлом я мог сделать это:

Код:

<% 
set msgSet = conn.execute("select * from base_scroller where scroller_num = 1" 
%>

проверить, не пусто ли это или что-то еще

Код:

<% if msgSet("scroller_name") <> "" then %>

и если бы это было так, я мог бы сделать с ним что угодно (например, показать его значение)

Код:

<%= msgSet("scroller_name") %>
<% end if %>

Теперь я не могу этого сделать, тест "если" не работает с "msgSet (" scroller_name ")", и мне нужно сначала переопределить его в другой переменной

Код:

<% scrollername = msgSet("scroller_name") %>

тогда и только тогда я смогу сделать тесты на нем ...

Код:

<% if scrollername <> "" then %>

и покажи это тоже.

<%= scrollername %>
<% end if %>

Я просто хотел бы получить возможность выполнять операции с переменными набора записей mysql, такими как b4 ....

Кто-нибудь сталкивался с этой проблемой? что изменилось, это ошибочная версия MySQL или что-то в этом роде?

Спасибо, ребята.

Ответы [ 6 ]

1 голос
/ 01 января 2009

Есть две вещи, которые вы должны сделать, чтобы убедиться, что у вас есть значение в поле:

  1. Убедитесь, что набор записей не пустой.
  2. Убедитесь, что поле в текущем не имеет значения NULL.

Я не исключаю каких-либо изменений в драйверах, которые повлияли на ваш код, но я предполагаю, что разница в том, что ваша строка фактически возвращает пустую строку (которая будет равна ""), а ваш набор записей возвращает правильное значение NULL что не равно "")

0 голосов
/ 27 января 2009

У меня та же проблема ... Просто перенесите сайт asp из mysql 4 & odbc 3.x (старая версия ...) в mysql 5.1 и odbc 5.1. Если я попробую этот простой код:

set rs = conn.execute ("выберите ....") пока не rs.eof response.write "t1:" & rs ("text") & "
t2:" & rs ("text") & "
" rs.MoveNext Венд

в качестве вывода я получаю следующее: t1: привет T2: t1: как ты T2: и т.д ...

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

0 голосов
/ 27 декабря 2008

Это может быть лучший способ проверить, чтобы проверить, является ли набор записей пустым альтернативным способом.

Я обычно использую:

On Error Goto 0

set msgSet = conn.execute("select * from base_scroller where scroller_num = 1" 

If msgSet.EOF = True And msgSet.BOF = True Then
  Response.Write "Recordset cursor was at the beginning and end of file - empty set."
  Response.End
End If

Это может помочь отладке.

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

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

Dim i

For Each i In msgSet.Fields
  Response.Write i & "=[" & msgSet.Fields(i) & "]<br />"
Next

Удачи

0 голосов
/ 27 декабря 2008

Хорошо ...

  1. новый odbc 5.1: расположен на серверах mysql.com (ссылка: http://dev.mysql.com/downloads/connector/odbc/5.1.html)

  2. Да. Я снова переустановил ОС (windows server 2003) на своем веб-сервере и установил на нем сервер mysql 5.0.

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

Вам требуются дополнительные сведения, пожалуйста?

0 голосов
/ 24 декабря 2008

Подробнее:

мой odbc: драйвер mysql 5.1.

моя версия mysql: сервер mysql 5.0

моя строка подключения:

Я пытался удалить иврит STMT = SET CHARACTER SET; OPTION = 3; часть - без изменений ...

проблема заключается в использовании любых переменных прямо из БД, это может быть любая переменная (text, date, int) ...

даже

день (msgSet ("scroller_date")) сейчас не работает ...

и это забавно ... все раньше работало просто отлично. B4 установка

Вы видите что-нибудь необычное? может быть другая версия mysql / ODBC?

0 голосов
/ 24 декабря 2008

Никогда раньше не сталкивался с этой проблемой, и я не уверен, почему (более подробная информация об ошибке будет полезна), но, как относительно быстрое решение, вы можете захотеть использовать предмет, когда используете его. Как:

   <%= cStr(msgSet("scroller_name")) %>

См. http://www.w3schools.com/vbscript/vbscript_ref_functions.asp#conversion для получения дополнительной информации.

Дополнительная информация об ошибке , которую вы получаете , поможет вам получить лучший ответ. MyODBC 5.1 не существует, так какую версию драйверов MyODBC вы используете? «Мой драйвер odbc: mysql 5.1» означает драйвер для MySQL 5.1 - это должен быть MyODBC версии 3.51.

Кроме того, под "после переустановки сервера моего сайта" вы имеете в виду чистую установку серверной ОС? или вы просто переустановили MySQL? Или что-то другое? MySQL 5.1 только что вышел 8 декабря - это была часть обновления?

Наконец, пожалуйста, прочитайте некоторые комментарии к вашему вопросу и некоторые ваши ответы. При прочих равных условиях, если требуется какое-либо разъяснение, отредактируйте вопрос, чтобы добавить детали. Не пишите ответ. Это не форум, и ваш ответ потеряет свой контекст, как только за него проголосуют. Также легче воспринимать весь вопрос, если все в одном месте, а не прокручивать вопрос и различные дополнения, выдаваемые за ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...