Question

J'ai un problème qui vient de commencer qui se passe après avoir réinstallé le serveur de mon site.

Dans le passé, je pouvais faire faire ceci:

Code:

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

vérifier si ce n'est pas vide ou quoi que ce soit d'autre

Code:

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

et si elle est que je pouvais faire quelque chose avec elle (comme le montrer est la valeur)

Code:

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

Maintenant, je ne peux pas le faire, le « si » ne fonctionne pas avec le « msgSet ( » scroller_name « ) » et je dois redifine abord dans une autre variable

Code:

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

alors et seulement alors je peux faire des tests sur elle ...

Code:

<% if scrollername <> "" then %>

et montrer aussi.

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

Je voudrais juste revenir l'option d'effectuer les opérations sur les variables MySQL recordset comme b4 ....

Quelqu'un at-il rencontré ce problème? ce qui a changé, est-ce un varsion falty mysql ou quelque chose?

Merci les gars.

Pas de solution correcte

Autres conseils

Il y a deux choses que vous devez faire pour vous assurer d'avoir une valeur dans un champ:

  1. Assurez-vous que le jeu d'enregistrements est pas vide.
  2. Assurez-vous que le champ dans le courant n'a pas de valeur NULL.

Je ne suis pas loin de tout changement dans les pilotes qui ont affecté votre code, mais je suppose que la différence est que votre chaîne renvoie en fait une chaîne vide (ce qui serait égale « ») et votre recordset retourne une valeur NULL appropriée ( qui est non égal "")

Plus de détails:

mon odbc est:. Mysql pilote 5.1

ma version mysql: serveur MySQL 5.0

ma chaîne de connetion est:

J'ai essayé de retirer le STMT = SET CHARACTER SET Hebrew; OPTION = 3; partie - pas de changement ...

le problème est d'utiliser toutes les variables depuis le db, il pourrait être une sorte de variable (texte, date, int) ...

même

jour (msgSet ( "scroller_date")) ne fonctionne pas maintenant ...

et ce th drôle est ... tout utilisé pour travailler très bien .. b4 l'installation

vous voyez quelque chose hors de l'ordinaire? peut-être une autre version mysql / ODBC?

Ok ...

  1. la nouvelle odbc est 5.1: situé sur les serveurs mysql.com (lien: http://dev.mysql.com/downloads/connector/odbc/5.1.html )

  2. Oui. Je l'ai réinstallé le système d'exploitation (Windows Server 2003) à nouveau sur mon serveur web et serveur installé MySQL 5.0 sur elle.

  3. Je ne reçois pas une erreur, il est tout simplement pas de retour les données lorsque j'utilise la méthode que j'expliquais abourt, et je dois utiliser les variables supplémentaires comme je l'ai expliqué.

besoin de détails plus-vous s'il vous plaît?

Il pourrait être une meilleure façon de tester pour vérifier si le vide est recordset d'une autre manière.

J'utilise généralement:

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

Cela pourrait aider à une certaine façon vers le déboguer.

Oh, et quelque chose qui pourrait être important. Je ne me souviens pas ce qui a causé, mais parfois je trouve que lors du référencement des champs MySQL via un jeu d'enregistrements, il était toujours minuscule, peu importe ce que les champs sont dans la définition de base de données ou d'une requête.

Si cela ne provoque pas votre script à l'échec, peut-être essayer de trouver ce qui a été renvoyé par le recordset.

Dim i

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

Bonne chance

Jamais vu ce problème avant, je ne suis pas sûr de savoir pourquoi (plus d'informations sur l'erreur serait utile) - mais, comme une solution relativement rapide, vous pouvez jeter l'élément lorsque vous l'utilisez. Comme:

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

Voir http://www.w3schools.com/vbscript/vbscript_ref_functions.asp# conversion pour plus d'informations.

Plus d'informations sur le erreur que vous obtenez pourrait vous aider à obtenir une meilleure réponse. Il n'y a pas MyODBC 5.1, donc la version des pilotes MyODBC utilisez-vous? Par "mon odbc est: mysql 5.1 driver". Vous voulez dire le pilote pour MySQL 5.1 - qui devrait être la version MyODBC 3.51

En outre, par « après avoir réinstallé le serveur de mon site » Voulez-vous dire que vous avez une installation propre du système d'exploitation du serveur? ou vous avez simplement ré-installer MySQL? Ou autre chose? MySQL 5.1 vient de sortir le 8 décembre - était cette partie d'une mise à jour

Enfin, s'il vous plaît lire certains des commentaires à votre question et certaines de vos réponses. Toutes choses étant égales par ailleurs, s'il y a une clarification nécessaire, modifier la question d'ajouter les détails. Ne pas écrire une réponse. Ce n'est pas un forum, et vous êtes réponse va perdre son contexte quelque chose minute est voté en-dessus. De plus il est plus facile de prendre dans toute la question si son en un seul endroit, par opposition au défilement entre la question et les diverses réponses se faisant passer pour addendas.

Je reçois le même problème ... Il suffit de migrer un site asp de MySQL 4 et 3.x odbc (ancienne version ...) à mysql 5.1 et 5.1 Odbc. Si je tente ce code simple:

set rs = conn.Execute ( "select ....") sans rs.EOF   response.write "t1:" & rs ( "text") et "t2
:" & rs ( "text") et "
"   rs.MoveNext wend

en sortie i obtenir les éléments suivants: t1: bonjour t2: t1: comment allez-vous t2: etc ...

La deuxième fois que j'accéder au terrain, il n'a pas de valeur, la seule façon est d'utiliser une variable temporaire pour stocker les données la première fois ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top