Überprüfung auf Spaltenwert klappt nur mit Zahlen

Dragonate

Erfahrenes Mitglied
Hallo,

hier nochmal ein kleines Problem :

Code:
if (count($errors) == 0) {
	
	mysql_select_db($_POST['datenbank_wert']) or die
	("Datenbank konnte nicht ausgewählt werden");
			
	$sql = "Select * FROM {$_POST['tabellen_wert']} WHERE {$_POST['datensatz_kriterium']} = {$_POST['datensatz_wert']}";
	$resDatenSatz = mysql_query($sql);
			
	while($ds_inhalt = mysql_fetch_row($resDatenSatz)){
				
		$datensatz_array = $ds_inhalt;
				
	}
			
}

Ich habe hier um die Suche nach Datensätzen noch etwas dynamischer zu machen noch 'datensatz_kriterium' hinzugenommen, da trage ich dann Spaltennamen ein.
Wenn ich dann z.B. als Kriterium "id" oder "plz" und als wert den entsprechenden Zahlenwert eingebe, funktioniert das auch wie bisher.
Gebe ich aber ein Feld als Kriterium ein, welches als Wert ein Wort hat, z.B. Kriterium : "betreiber" Wert : Mein_Name dann geht das nicht.

Muss ja irgendwie mit den verschiedenen Datentypen zu tun haben, habe mal versucht einen expliziten Cast durchzuführen um immer den gleichen Typ zu haben, ging aber nicht !?
 
Du musst um den Wert noch Hochkommas machen, damit sie als string verarbeitet werden. Im Moment sollte es eigentlich bei Eingabe von Wörter zu Syntax Fehler bei der Abfrage kommen.

Code:
$sql = "Select * FROM {$_POST['tabellen_wert']} WHERE {$_POST['datensatz_kriterium']} = '{$_POST['datensatz_wert']}'";

Es wäre auch ein mysql_real_escape_string() angebracht, weil du die Werte ungeprüft in dein Query einbaust.
 
Hm aha,

also ersma das mit den Hochkommas geht, dann findet er das genau wie ich auch wollte.

Aber ich müsste es ja so haben das man den Wert ohne Hochkommas eingeben kann, das ja sonst nicht cool. Wie mache ich das, mit Casting dachte ich ? aber wie ?
 
Ich versteh nicht was du meinst. Die Hochkommas setzt du in PHP um deinen Wert, so wie ich es gepostet habe. Das funktioniert auch mit Zahlen ohne Probleme.
 
Zurück