PHP Abfrage aus MySQL Datenbank leer
bluezz
- datenbank
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);
?>
Kleine Anmerkung: hatte auch schon echo $row->url
versucht
Gruß bluezz
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:
Kurzum, ganz einfach ein *bisschen* sinnvolles Debuggin betreiben.
MfG ChrisB
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
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
$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 !