Select-Abfrage mit like
Kai
- php
Hi.
Ich habe folgendes Problem. Ich versuche eine select-Abfrage mit like zu starten.
BSP:
$link_id="12"; // Die variable ist bereits so vorhanden und kann leider nicht geändert werden.
$result=mysql_query("select * from links where id like '%".$link_id."%' ");
while($row = mysql_fetch_array($result)) {
$link[]=$row[link];
}
echo $link[0]."<br>";
echo $link[1]."<br>";
Er soll einfach alles aus der db auslesen, wo die id 1 oder 2 ist.
Ist es überhaupt möglich eine Like-Abfrage mit 2 werten zu starten?
Mfg
Kai
Er soll einfach alles aus der db auslesen, wo die id 1 oder 2 ist.
Und was antwortet er statt dessen?
Ich bin mir nicht sicher, aber ich glaube, LIKE kannst du auch gar nicht auf Zahlen anwenden sondern nur auf Zeichenketten.
Wenn ich nur like '%1%' oder '%2%' mache, klappt alles perfekt... leider habe ich halt die vari mit 12 und möchte nur das like für 12 also 1 oder 2 ausgeben lassen ;-)
Hast du trotzdem noch eine Idee?
Mfg
Kai
Falls die ID als Integer gespeichert ist, und du alle Eintraege haben moechtest, die als ID 1 oder 2 haben, wuerde ich das so machen>
SELECT * FROM links WHERE (id = 1) OR (id = 2);
Oder hab ich dich jetzt doch falsch verstanden?
Oder hab ich dich jetzt doch falsch verstanden?
Ich schätze mal, dass seine Variable vorgegeben ist... der Wert "12" sollte hier wohl nur als Beispiel dienen, oder?
danke für die vielen schnellen antworten..
Aber die Vari bekomme ich schon als 12 und müsste sie in 2 teile zerlegen um diese getrennt abzufragen. dachte es ist einfacher möglich... Das kommt davon wenn man das system blink programmiert und später sowas hat ;-)
Mfg
Kai
Also... eine Variable, die Du immer mit dem selben Wert bekommst, ist ja eigentlich mehr eine Konstante.. und dann kannst Du auch darauf verzichten die "Variable" zu verwenden :)
ja... leider. habe diese aus der datenbank ausgelesen und kann nicht die ganze db neu aufbauen.
Jetzt habe ich einfach eine if-schleife gesetzt, die das überprüft ;-)
sind aber dann mehr reihen quellcode als gewollt ;-)
Trotzdem danke
Mfg
Kai
[...] if-schleife [...]
hmmmm... :sceptic: Das gefällt mir fast so gut wie die konstante Variable :D
Schöne Grüße und viel Spaß :)
ja ... leider...
habe leider von einem anderen Script die vari $link_id="12";
und will halt nur 1 oder 2 haben... kann die 12 aber nicht in 2 teile zerlegen..
Mfg
Kai
Hello,
Wenn ich nur like '%1%' oder '%2%' mache, klappt alles perfekt... leider habe ich halt die vari mit 12 und möchte nur das like für 12 also 1 oder 2 ausgeben lassen ;-)
Sollen denn Datensätze, derene IDs z.B. 123, 799641345, 9991999, 3332
auch ausgegeben werden?
Hier handelt es sich um ein sogenanntes Werte-Set aus zwei werten. Sets werden mit IN ( ) abgefragt, also
select $fields from $table where ID IN (1,2)
Dann klappt das auch, wenn die IDs numerisch definiert sind.
Man darf aber trotzdem auch so abfragen:
select $fields from $table where ID IN ('1','2')
Aus Sicherheitsgründen sollte man die Häkchen grundsätzlich nehmen, wenn man nicht mit den Werten rechnen muss. Die meisten SQL-Dialekte sehen diese Möglichkeit vor und empfehlen sie sogar ausdrücklich. Die Möglichkeit der Injektion wird damit erheblich verringert.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
$result=mysql_query("select * from links where id like '%".$link_id."%' ");
Damit erzeugst Du ein:
... LIKE '%12%' ....
Deshalb findest Du wohl nichts.
Du mußt wohl die Variable vorher auseinander nehmen
$link_id="12"; // Die variable ist bereits so vorhanden und kann leider nicht geändert werden.
und warum nicht?
unset($link_id);
$link_id = "neues value";
yo,
$sql= "
select *
from links
where
id IN (substring($link_id, 1, 1), substring($link_id, 2, 1))";
kann sein, dass unter mysql der index für den ersten buchstaben bei 0 anfängt anstelle von 1. dann must du einfach die werte oben entsprechend ändern.
Ilja
Hello,
$sql= "
select *
from links
where
id IN (substring($link_id, 1, 1), substring($link_id, 2, 1))";kann sein, dass unter mysql der index für den ersten buchstaben bei 0 anfängt anstelle von 1. dann must du einfach die werte oben entsprechend ändern.
Nöö, das passt schon so. MySQL fängt bei 1 an zu zählen und liefert bei den String-Suchfunktionen 0, wenn der gesuchte String nicht enthalten ist.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom