# Mysql Platzhalter für *



## matzseesi (29. Juli 2005)

Hi Leute,

Bin gerade dabei ein paar Datensätze auszugeben und bin auf folgendes problem gestoßen

SELECT id FROM iddb WHERE name=hallo

Hier listet er mir alle ids auf wo in der Spalte name Hallo steht
Wie lautet allerdings der Befehl für alle Namen?

SELECT id FROM iddb WHERE name=*

isses nicht

Danke für die Hilfe

Gruß Seesle


----------



## aruba-x-x (29. Juli 2005)

Einfach nur  "SELECT id FROM iddb".


----------



## matzseesi (29. Juli 2005)

jupp
aber ich bastel den query in php zusammen und brauche deswegen dieses *

Gruß´Matz


----------



## aruba-x-x (29. Juli 2005)

Mir ist zwar nicht klar wieso du das dann brauchst, aber versuchs mal mit
 " SELECT id FROM iddb WHERE name LIKE '%' "


----------



## matzseesi (29. Juli 2005)

hmm

habs jetzt so probiert! 

SELECT id FROM iddb WHERE name=%

Die ganze abfrage ist etwas komplizierter und ich habe nur ein Beispiel genommen um zu erklären was ich möchte! es wäre echt super wenn jemand weiß was man da verwendet! normal wird ja * für alles verwendet is in MYSQL ja auch so wenn man alle Spalten auswählt aber warum nicht für diesen Zweck hier?

Danke für deine Antwort aber leider muss es so heißen WHERE name=dieserplatzhaltereben
Kennt wer das geheimnis?

Gruß Matz


----------



## heddesheimer (30. Juli 2005)

matzseesi hat gesagt.:
			
		

> habs jetzt so probiert!
> 
> SELECT id FROM iddb WHERE name=%



das wird nicht das bringen, was du erhoffst. Platzhalter kannst du nur mit LIKE verwenden

aruba-x-x hat ja schon die richtige Antwort gegeben.

Marian


----------



## matzseesi (30. Juli 2005)

gut dann ist platzhalter vielleicht falsch ausgedrückt!
mein problem ist dass ich nicht undert if abfragen machen möcht
deswegen such ich einfach ein Zeichen mit dem ich alle datensätze auswählen kann ohne den ganzen string verändern zu müssen! 

so lad ich mir einfach per post den namen rein und wenn keiner ausgewählt wurde kommt eben das Zeichen für alle!

Also gibts da nichts?

Gruß Matthias


----------



## heddesheimer (30. Juli 2005)

Also ich weiß ja nicht wo dein Problem liegt, aber ich wiederhole einfach mal meine Antwort zum dritten Mal mit anderen Worten ;-)

Also wenn du einfach nur sicherstellen willst, dass irgendwas gefunden wird, dann machst du folgendes:

in $name steht der Name der im Formular eingegeben wurde:


```
$sql = "SELECT * from adressen WHERE name LIKE '" . $name . "%'";
```

Das ist dann deine Abfrage. Wenn Jemand Müller eingibt, dann bekommst Du

```
SELECT * from adressen WHERE name LIKE 'Müller%'
```

findet alle Namen, die mit Müller ANFANGEN

Wenn jemand nichts eingibt bekommst Du:


```
SELECT * from adressen WHERE name LIKE '%'
```

Also alle Namen.

Alternativ (und so würde ich es wahrscheinlich machen):


```
if ('' == trim($name)) // wenn der Name leer ist
{
  $sql = "SELECT * from adressen"; // das WHERE einfach weglassen
} else {
  $sql = "SELECT * from adressen WHERE name = '$name'";
}
```
Noch Fragen?

Ich hoffe, dass ich es jetzt verständlich erklärt habe.

Gruß

Marian


----------



## matzseesi (30. Juli 2005)

Ist LIKE die komplett selbe Funktion wie wenn ich name=blubb mache
oder gibts da einen Unterschied?

Genau diesem IF möchte ich eben ausweichen dass du gemacht hast in deinem letzten beispiel!

 :suspekt:


----------



## Gottox (30. Juli 2005)

Wie wäre es der Einfachheit halber hiermit?

```
SELECT id FROM iddb WHERE name=name
```


----------



## heddesheimer (30. Juli 2005)

matzseesi hat gesagt.:
			
		

> Ist LIKE die komplett selbe Funktion wie wenn ich name=blubb mache
> oder gibts da einen Unterschied?



LIKE macht das gleiche wie "=" nur dass du eben auch Platzhalterzeichen verwenden kannst.

http://dev.mysql.com/doc/mysql/en/string-comparison-functions.html

Marian


----------

