Antworten auf deine Fragen:
Neues Thema erstellen

mysqli_fetch_assoc expects parameter 1...

MasterT

Nicht mehr ganz neu hier

Hallo,
ich weiß nicht mehr weiter. Diese Funktion will einfach nicht arbeiten. Es wird immer der selbe Fehler zurück gegeben obwohl ich keinen sehe. Die Funktion soll eine Regestrierung in der Datenbank speichern. Den Fehler vermute ich in nicht in der Funktion db_connect().

Funktion:
PHP:
    function registrieren($name, $benutzer, $passwort, $email) {

        if(preg_match('/^[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)*\@[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)+$/i', $email)){
           
            $code= md5($email.date("H:i:s"));
   
            /*Läd Inhalt aus DB*/
            $abfrage = mysqli_query(db_connect(),"SELECT `regtitle`, `regtext` FROM `system_einstellungen` WHERE id=`1`");
            $row2 = mysqli_fetch_assoc($abfrage);   
            $emailbetreff = $row2['regtitle'];
            $emailtext = $row2['regtext'];
               
            /*Ermöglicht MySQL einträge mit PHP befehlen auszuführen*/
            eval("\$emailbetreff = \"$emailbetreff\";");
            eval("\$emailtext = \"$emailtext\";");
           
            /*Email wird zusammengestellt*/
            $header = "Return-Path: noreplay@musfin.de". "\n";
            $header .= "MIME-Version: 1.0" . "\n";
            $header .= "Content-type:text/plain;charset=utf-8" . "\n";
            $header .= 'From: Musfin.de<noreplay@musfin.de>' . "\n";
            mail($email, $emailbetreff, $emailtext,$header);
        }
        else
        {
            echo'FEHLER!';
        }   
    }

db_connect() :
PHP:
    function db_connect()
    {
        global $connect;
       
        if($connect)return $connect;
        $connect = mysqli_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK);
        mysqli_set_charset($connect, 'utf8');
        return $connect;
    }

Lg
Phill
 

m_c

Nicht mehr ganz neu hier

Wie wäre es denn mit debuggen? Man kommentiert den Fehler aus und lässt sich die Variable anzeigen.

Außerdem: eval=evil.
 

MasterT

Nicht mehr ganz neu hier

Wie wäre es denn mit debuggen? Man kommentiert den Fehler aus und lässt sich die Variable anzeigen.

Außerdem: eval=evil.
Ich habe es gedebugt aber ich fand nicht mehr raus als das der mysqli_query das skript stoppt. Ich verstehe aber einfach den Fehler nicht

eval ist nicht evil wenn der User gar keinen Zugriff darauf hat.
 

lachender_engel

Aktives Mitglied

Der Fehler liegt im mysqli_fetch_assoc. Ich denke, das ist soweit klar.
Dass die Funktion einen Paramter vermisst liegt daran, dass der erste Parameter
$abfrage ein boolean (true oder false) ist. Das wiederum liegt an Deiner zuvor erstellten Query. Ich vermute sie gibt ein false zurück, da Du ein WHERE id=`1` einsetzt.
Ich vermute aber, das liegt daran, dass Du Dein ID-Feld als Integer gebaut hast. Du vergleichst aber einen String (weil Du die 1 in Single Quotes setzt),
Nimm mal diese Zeile:
Code:
$abfrage = mysqli_query(db_connect(),"SELECT `regtitle`, `regtext` FROM `system_einstellungen` WHERE id=1");
Und, klappt es jetzt?
Wenn nicht, mach mal ein print_r($abfrage) nach der Zeile und schau, was Dir die Query zurück liefert.
 

MasterT

Nicht mehr ganz neu hier

@lachender_engel

So das funktioniert. Leider wird der Inhalt jetzt nicht in der Email angezeigt, komischer weise lässt er sich aber mit echo anzeigen.

PHP:
    function registrieren($name, $benutzer, $passwort, $email) {
        if(preg_match('/^[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)*\@[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)+$/i', $email)){
          
            $code= md5($email.date("H:i:s"));
  
            /*Läd Inhalt aus DB*/
            $abfrage = mysqli_query(db_connect(),"SELECT `regtitle`, `regtext` FROM `system_einstellungen` WHERE id=1");
            print_r($abfrage);
            $row2 = mysqli_fetch_assoc($abfrage);  
            $emailbetreff = $row2['regtitle'];
            $emailtext = $row2['regtext'];
            $string = explode(" ", $name);
            $name = $string[0];
          
            /*Ermöglicht MYSQL einträge mit PHP befehlen auszuführen*/
            eval("$emailbetreff = \"$emailbetreff\";");
            eval("$emailtext = \"$emailtext\";");
              
          
            /*Email wird zusammengestellt*/
            $header = "Return-Path: noreplay@musfin.de". "\n";
            $header .= "MIME-Version: 1.0" . "\n";
            $header .= "Content-type:text/plain;charset=utf-8" . "\n";
            $header .= 'From: Musfin.de<noreplay@musfin.de>' . "\n";
            mail($email, $emailbetreff, $emailtext,$header);
            }
            else
            {
                echo'FEHLER!';exit;
        }
    exit;  
    }
 
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

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben