bluezz: PHP Abfrage aus MySQL Datenbank leer

Hallo,

ich habe folgende DB-Struktur:
md5 (DB)
   -md5 (Tabelle)
        plain           hashed
        test            098f6bcd4621d373cade4e832627b4f6
usw...
Also plain text und md5 dazu. Der zum hashed dazugehörige plain soll beim modus get ausgegeben werden. Wenn ich nun query.php?act=get&text=098f6bcd4621d373cade4e832627b4f6 aufrufe wird nichts zurückgegeben (stat 'test'). Obwohl alles in der Tabelle drinsteht. Hat jemand eine Ahnung wieso das so ist?

<?php  
	$in = $HTTP_GET_VARS['text'];  
	$act = $HTTP_GET_VARS['act'];  
	$hash = md5($in);  
 	$db = mysql_connect('localhost', 'root', 'root') or die ("Keine Verbindung moeglich");  
 	$db_select = mysql_select_db( 'md5' ) or die ("Datenbank  nicht verfügbar");  
	if($act == 'add'){  
		$result = mysql_query ( "INSERT INTO md5 (plain,hashed) VALUES ('$in', '$hash')" );  
	}  
	else if($act == 'get'){  
		$result = mysql_query ( "SELECT plain FROM md5 WHERE hashed = $in");  
		while($row = mysql_fetch_object($result))  
		{  
  			echo $row;  
		}  
	}  
 	mysql_close($db);  
?>  

  1. Kleine Anmerkung: hatte auch schon echo $row->url versucht

    Gruß bluezz

  2. Hi,

    bitte keinen sinnlosen Links setzen.

    Wenn ich nun query.php?act=get&text=098f6bcd4621d373cade4e832627b4f6 aufrufe wird nichts zurückgegeben (stat 'test').

    Dann überprüfe die Werte der im Script vorliegenden Variablen durch Kontrollausgaben an stragetisch geeigneten Stellen, und führe eine *Erfolgskontrolle* deiner Datenbankabfragen durch, statt naiv von „wird schon klappen“ auszugehen:

    • Query als Text ausgeben lassen, in phpMyAdmin o.ä. testen
    • Rückgabewert von mysql_query auswerten, ggf. mysql_error befragen.

    Kurzum, ganz einfach ein *bisschen* sinnvolles Debuggin betreiben.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Also: wenn ich in der Abfrage den Wert direkt einsetze (WHERE hashed = 098f6bcd4621d373cade4e832627b4f6)und dann das query ausgeben lasse kriege ich Resource id #2 oder Resource id #3 zurück, aber nicht den plaintext...
      über phpmyadmin geht der code einwandfrei.

      An was könnte das liegen?

      Gruß

      Bluezz

      1. Hi,

        Also: wenn ich in der Abfrage den Wert direkt einsetze (WHERE hashed = 098f6bcd4621d373cade4e832627b4f6)und dann das query ausgeben lasse kriege ich Resource id #2 oder Resource id #3 zurück, aber nicht den plaintext...

        An was könnte das liegen?

        Daran, dass dir noch ziemlich viel Grundlagenwissen fehlt.

        Der Rückgabewert von mysql_query im Erfolgsfalle ist eine Resource, ja - das ist aber ein imaginäres Konstrukt, und nichts, was sich einfach so per echo ausgeben liesse.

        Schreibe deine Queries der Übersichtlichkeit halber so, dass du erst den Query-„Text“ in einer Variablen ablegst (dann kannst du ihn auch sehr einfach zur Kontrolle ausgeben lassen), und anschließend diese Variable als Parameter für mysql_query verwendest.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. $sql = "SELECT `plain` FROM `md5` WHERE `hashed` = '098f6bcd4621d373cade4e832627b4f6' ";  
          		$result = mysql_query ( $sql) or die ('failed');  
          		while ($row = mysql_fetch_assoc($result)) {  
              		echo $row['plain'];  
          		}
          

          So geht es !