SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.03.2010, 21:30:44
xhennex xhennex ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 45
Beiträge: 4
Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Hallo zusammen ,

ich habe folgendes Problem:

Diese Abfrage liefert kein Ergebnis zurück:

.. AND ((option_text IN($liste)) OR (option_text BETWEEN $von AND $bis)) ..

Das Kuriose ist, das die Einzelabfragen funktionieren, die Verknüpfung mit OR aber nicht.

option_text ist vom Typ varchar, die Variablen vom Typ integer.

Hat Jemand eine Idee ?

Grüße,
Henne
Mit Zitat antworten
  #2  
Alt 20.03.2010, 23:28:41
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Kann das sein, dass du mit deinen Klammern durcheinander bist?
Mit Zitat antworten
  #3  
Alt 21.03.2010, 08:23:14
xhennex xhennex ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 45
Beiträge: 4
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Hallo,
an den Klammern liegt es nicht, die äußeren müssen aber sein, damit die Semantik der Gesamtbedingung nachher stimmt, wenn es mal funktioniert ;-).
Achja, die $liste-Variable ist vom Typ varchar und sieht so aus "12,3,7,19,2".
Ich denke das Problem liegt daran, das bei der Abfrage
option_text IN($liste) option_text vom Typ varchar bleiben muss,
damit varchar IN(varchar) geprüft wird und das bei
option_text BETWEEN $von AND $bis option_text vom Typ Integer sein müsste,
damit integer BETWEEN integer AND integer geprüft werden kann.
Ich habe es versucht mit CAST(option_text AS SIGNED) BETWEEN $von AND $bis,
aber das funktioniert auch nicht.
Noch jemand einen Vorschlag oder einen Hinweis ?
Grüße,
Henne
Mit Zitat antworten
  #4  
Alt 21.03.2010, 22:36:40
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Dann zeig mal die komplette Abfrage. Und auch, was rauskommen müsste (vielleicht gibt's ja auch kein Ergebnis).
Mit Zitat antworten
  #5  
Alt 22.03.2010, 10:24:54
jwe jwe ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 55
Beiträge: 4
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Wieso ist den option_text überhaupt Varchar und nicht Integer?
Ich habe es mal mit der Primär-ID nachgebildet:

... WHERE True AND ((id in (2,7,16,18)) or (id BETWEEN 10 AND 40))

funzt ohne Probleme.

Ich kann mir schon vorstellen, dass er in deinem Fall mit dem Typecasting durcheinander kommt. Gerade bei der Sortierung von Zahl und Text.
BETWEEN '20' AND '100' wird wohl immer leer bleiben, da '2' größer als '1'.
Mit Zitat antworten
  #6  
Alt 22.03.2010, 10:48:56
xhennex xhennex ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 45
Beiträge: 4
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Hallo,
das ist folgendermaßen:
ein Benutzer darf Artikel bestellen wenn diese entweder in einer Artikelliste aufgeführt sind oder innerhalb eines Artikelbereiches liegen. Die Artikelliste sieht z.B. so aus: $list = "12,3,7,19,2"; der Bereich so: $von = 1; $bis = 20; Die Abfrage sieht das nn so aus: SELECT artikelNr FROM artikel WHERE ((artikelNr IN($list)) OR (artikelNr BETWEEN $von AND $bis)). Wenn ich die Variablen $list, $von,$bis mit festen Werten vorbelege, die 100% zu einem Ergebnis führen, kommt bei Abfrage kein Ergebnis heraus. Bei den Einzelabfragen: SELECT artikelNr FROM artikel WHERE artikelNr IN($list) und SELECT artikelNr FROM artikel WHERE artikelNr BETWEEN $von AND $bis kommt genau das gewünschte heraus. Das Kuriose ist , das ein SELECT artikelNr FROM artikel WHERE ((artikelNr in ($list)) OR 1) klappt (muss ja, da Bedingung immer erfüllt), ein SELECT artikelNr FROM artikel WHERE (1 OR (artikelNr BETWEEN $von AND $bis)) aber nicht. Ich verzweifele noch daran, vielleicht nehme ich mal eine andere MySQL-Version.

Grüße,
Henne
Mit Zitat antworten
  #7  
Alt 22.03.2010, 21:24:40
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

PHP-Code:
WHERE (OR (artikelNr BETWEEN $von AND $bis)) 
das ist auch Quatsch, weil für die 1 der Vergleich fehlt.

Bevor du nicht den ganzen Code (SELECT-Statement und wo die Werte der Variablen herkommen) postet, kann man nur spekulieren.

z.B. müssen Variablen in Anführungsstriche gesetzt werden, also IN('§list')...
Mit Zitat antworten
  #8  
Alt 21.04.2010, 11:34:33
xhennex xhennex ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 45
Beiträge: 4
AW: Warum klappt diese ..AND (... OR ... ) Abfrage nicht ?

Hallo,

das Problem ist gelöst.
Es lag definitiv an den Datentypen. Zuerst habe ich mit CAST versucht das hinzubekommen, führte abern icht zum Ziel, jetzt habe ich alle Variablen vom Typ varchar und es funktioniert einwandfrei.
Vielen Dank für die Hilfe und die Hinweise !!
Mit Zitat antworten
Antwort

Stichworte
and, between, in(), mysql


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:20:23 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt