Antworten auf deine Fragen:
Neues Thema erstellen

DB Abfrage : WHERE md5(....

maxsteel

Nicht mehr ganz neu hier

Hiho Leute,
ich habe gerade ein kleines Problem bei der DB Abfrage, da ich diese Form der Abfrage noch nie gebraucht habe und google nichts ordentliches liefert.
Also, hier das Problem Skript:
PHP:
...
$article	= $_GET["article"];
$result 	= mysql_query("SELECT content FROM articles WHERE md5(headline) = $article", $conn);
$zeileholen = mysql_fetch_array($result);
...

Fehlermeldung: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\cms\sites\articles\edit_article.php on line 4

Ich denke ja das der Fehler bei dem md5 liegt, aber der ist unumgänglich. Da in der url variablen gehasht mitgegeben werden.

Danke schonmal.
mfg max

//edit: zeile 4 ist das SELECT :) nur zur info
 

Dennis96

Noch nicht viel geschrieben

AW: DB Abfrage : WHERE md5(....

im der mysql referenz gibt es keine funktion mit dem namen md5()

//edit ok, habs nachgeprüft, mein fehler :p
 

Sinane

Puttmacherin

AW: DB Abfrage : WHERE md5(....

PHP:
$result     = mysql_query("SELECT content FROM articles WHERE md5(headline) = ".$article."", $conn);

Nur ka ob das mit dem md5() geht.
 

maxsteel

Nicht mehr ganz neu hier

AW: DB Abfrage : WHERE md5(....

Wie kann man das denn sonst machen? Um eine spalte zu hashen und dann zu überprüfen.
Ich gebe ja meiner url daten per get mit, um genau zu()sein die headline als md5. nun will ich den beitrg mit der id der url öffnen. Also zb: meine url hat als daten article=c4ca4238a0b923820dcc509a6f75849b (also artikel_id =1)
nun will ich von dem artikel mit dem select den content aus der db holen.
nur wie ihr seht gehts nicht :)
 

netbandit

Aktives Mitglied

AW: DB Abfrage : WHERE md5(....

Hallo? Magst Du das mit den Hochkommas mal ausprobieren?

Vorgekaut:

PHP:
$result=mysql_query("SELECT content FROM articles WHERE md5(headline) = '$article'", $conn);
Funktioniert bei mir. Deine Fehlermeldung bekomme ich allerdings nicht hin. Grundsätzlich solltest Du Dir aber MySql-Fehlermeldungen ausgeben lassen, Beispiel:
PHP:
$result=mysql_query("SELECT content FROM articles WHERE md5(headline) = '$article'", $con) or die(mysql_error());
Btw. mysql_fetch_array direkt nach dem mysql_query ohne Schleife und ohne Limit zu verwenden finde ich ein wenig unschön :rolleyes:

Grüße
 

stonie08

Nicht mehr ganz neu hier

AW: DB Abfrage : WHERE md5(....

ich verstehe nur nicht wieso du den Spaltennamen unbedingt md5() verschlüsseln willst oder weiß ich da was nicht!?

mfg
 
M

mazel_k

Guest

AW: DB Abfrage : WHERE md5(....

Wahrscheinlich täusche ich mich, aber durchsucht du eine Spalte die md5(headline) heißt? also die die bezeichnung von headline verschlüsselt hat?

ich komm leider auch nicht mit deiner Erklärung klar, in der URL wird die ID mittels GET übergeben, also $article.
wenn also die Variable article kryptisch in der URL übergeben wird, ist es dann nicht logischer diese umzuwandeln und nicht der Spaltenname?
 

saila

Moderatorle

AW: DB Abfrage : WHERE md5(....

Hi,

es mach wohl keinen Sinn, eine Spalte mit der Bezeichnung "headline" verschlüsselt in eine Bedingung zu setzen oder? Alleine der Namenskonversion sollte wohl der Select wie folgt lauten:

Code:
'SELECT content FROM articles WHERE articles_id = '. (int)$articles_id;
(int) ist optional und prüft lediglich, ob articles_id ein integer-Wert Typ und Inhalt hat. MD5() verschlüsselt eine Variable innerhalb eines Query oder dessen Bedingung und wird somit in der Regel für ein Kennwort verwendet. Wenn allerdings MD5() von MySql auf ein Feld gesetzt wird, dürfte das erhebliche Probleme verursachen :)
 

crx_ed9

Noch nicht viel geschrieben

AW: DB Abfrage : WHERE md5(....

...
PHP:
...
$article    = $_GET["article"];
$result     = mysql_query("SELECT content FROM articles WHERE md5(headline) = $article", $conn);
$zeileholen = mysql_fetch_array($result);
...
...

Also die Abfrage ist ebbes - sorry falls ich dir zu nahe trete - unsinnig. Denn MD5(headline) = MD5-Verschlüsselung des Stings "headline".

Um mich meinen Vorrednern anzuschließen, an deiner Abfrage stimmt was nicht.

mein Versuch diese Abfrage zu präzisieren
PHP:
/** Connector für die MYSQL Verbindung
 ** mysqlConnect Variabeln ersetzen oder includieren
 **/
    function connectSRV()
    {
        $conID= mysql_connect($dbhostSQL,$dbuserSQL,$dbpwdSQL)
        or die ("MYSQL Verbindungsfehler<br>".mysql_error());
        mysql_select_db($dbnameSQL,$conID);
        return $conID
        
    }
    function normalizeSQLresult($res)
    {

        $count=0; //Zähler
        while ($row = @mysql_fetch_assoc($res)) 
        //solange es Ergebnisse gibt ausführen
        {
          $ergebnis[$count] = $row; //Werte speichern
          $count++;
         }

        return $ergebnis;

    }


// je nach dem '$article' oder $article, Zahl oder String..
//$sql="SELECT content FROM articles WHERE md5($headline) = $article";
@edit:
/**
1. alle ArtikelIDs Abfragen | select articel_ID from articles
2. Array erzeugen, dort alle ArtikelIDs MD5 Verschlüsseln| $AIDs=array("aticle_ID"=>SQLresult['article_ID'],"MD5"=md5($SQLresult['article_ID'])) 
3. mehere möglichkeiten, Array hochzählen, in_Array, oder wie auch immer| um an die Inforamtionen zu kommen
4. neue Abfrage select content from articles where article_id=ergebnis_aus_Array
5. rest wie gehabt..
**/
//$sql="SELECT content FROM articles WHERE articel_id = md5($article)";
$result=normalizeSQLresult(mysql_query($sql,connectSRV()));
/** 
 ** Hilfsweise Ausgabe des Array
 ** 
 **/
print_r($result)
so hoffe es hilft dir auf deinem Weg.

Ich habe mir hierraus eine Klasse geschrieben -daher keine Garantie das es so geht bin zu müde ums zu testen - , auf die ich immer verweise, vor jedem SQL-Aufruf rufe ich die Funktion connectSRV auf abschließend wird die SQL-Abfrage gestellt.

Grüße
 
Zuletzt bearbeitet:

maxsteel

Nicht mehr ganz neu hier

AW: DB Abfrage : WHERE md5(....

Hiho Leute,
ich hab es nun geschafft :D
PHP:
$article = $_GET["article"];
$result  = mysql_query("SELECT id, content FROM articles WHERE MD5(`id`) = '$article'", $conn);
$zeileholen = mysql_fetch_array($result);
Danke an alle. nun gehts.
MfG Max
 

saila

Moderatorle

AW: DB Abfrage : WHERE md5(....

Hiho Leute,
ich hab es nun geschafft :D
PHP:
$article = $_GET["article"];
$result  = mysql_query("SELECT id, content FROM articles WHERE MD5(`id`) = '$article'", $conn);
$zeileholen = mysql_fetch_array($result);
Danke an alle. nun gehts.
MfG Max

Jo es geht, allerdings ist die folgende Variante performanter, da du nicht das mysql-feld zum md5 bewegen musst:

PHP:
<?php
$article = md5($artikle);
/*.... hier der query und in diesem nach WHERE id = "'. $artikle .'" ...*/
?>

Darüber hinaus prüfst du auf deine Variante nicht, was in der GET-Var 'artikle' enthlaten ist. Sicherlich kann da auch schädlicher Scriptstücke enthalten sein, welche z.B. durch die vorgeschlagene Variante per md5 einfach verschlüsselt wird. Ergo - ein mögliches Sicherheitsloch noch geschlossen.

Um an einen anderen Thread anzuschliessen: Performance erhälst du darüber hinaus durch folgende Query-Schreibe:

Code:
mysql_query('SELECT field FROM table WHERE x = "'. $var .'"');
[code]

Warum steht demnächst noch im 1 oder 2. Thread in diesem Forum.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.616
Beiträge
1.538.359
Mitglieder
67.535
Neuestes Mitglied
QuestionMark
Oben