2016-07-14 15 views
0

So habe ich eine sehr einfache Funktion, die gegen eine MySQL-Datenbank von Benutzern mit einigen anderen Anmeldeinformationen läuft. Ich habe mehrere andere Funktionen geschrieben, die ähnliche Abfragen mit dieser Arbeit wie erwartet ausführen. Allerdings bekomme ich jedes Mal, wenn ich eine Abfrage für meine Datenbank abrichte, null Ergebnis. Ich habe die Abfrage selbst genommen und direkt dagegen ausgeführt (phpmyadmin) und konnte die gewünschten Ergebnisse abrufen.Warum bekomme ich null Ergebnisse?

function getName($user){ 
    $con = mysqli_connect('localhost','*****','*****','*****'); 
    if(mysqli_connect_error()){ 
     echo 'Failed to Connect: '. mysqli_connect_error(); 
     die(); 
    } 
    $stmt = $con->prepare('SELECT firstName,lastName FROM users WHERE user=? LIMIT 1'); 
    $stmt->bind_param('s',$user); 
    $stmt->execute(); 
    $stmt -> bind_result($fname,$lname); 


    $stmt->fetch(); 

    $lArr = str_split($lname); 
    $canName = $fname . ' ' . $lArr[0].'.'; 
    return $canName; 
} 

Ich habe mit und ohne Limit nur für den Fall versucht. var_dump zeigt immer null an. Weiß jemand, warum das passieren würde?

+1

Um die offensichtliche zu fragen, haben Sie versucht, die rohe Abfrage für Ihre MySQL-Instanz ausgeführt wird, und erhalten Sie alle Datensätze zurück? –

+0

Ja, ich habe und ja ich bekomme die Ergebnisse, nach denen ich suche. – Hans

+1

Sie haben vergessen, '-> fetch()' irgendwelche Ergebnisse aus der Ergebnismenge, nur die Bindung an Variablen ist nicht genug – RiggsFolly

Antwort

1

Sie haben vergessen, alle Ergebnisse aus der Ergebnismenge ->fetch(), um sie zu Variablen nur nicht verbindlich genug ist

function getName($user){ 
    $con = mysqli_connect('localhost','*****','*****','*****'); 
    if(mysqli_connect_error()){ 
     echo 'Failed to Connect: '. mysqli_connect_error(); 
     die(); 
    } 
    $stmt = $con->prepare('SELECT firstName,lastName FROM users WHERE user=? LIMIT 1'); 
    $stmt->bind_param('s',$user); 
    $stmt->execute(); 
    $stmt -> bind_result($fname,$lname); 

    // now fetch data into the bound variables 
    $stmt->fetch(); 

    $lArr = str_split($lname); 
    $canName = $fname . ' ' . $lArr[0].'.'; 
    return $canName; 
} 
+0

Also markiere ich fetch() als Antwort. Während ich jedoch feststellte, dass ich tatsächlich fetch() verwenden musste, fand ich auch, dass ich doppelte Anführungszeichen anstelle von Singles verwenden musste. Mit fetch noch null mit fetch und doppelten Anführungszeichen konnte ich zurückgeben, was ich brauchte. Wie immer vielen Dank für die Hilfe von allen. – Hans

+0

Doppelte Anführungszeichen wurden benötigt wo? – RiggsFolly

+0

Oh, und du hast das nicht als Antwort gewertet? Aber egal – RiggsFolly

-1

Sie die Abfrage ausführen, aber Sie sind Kommissionierung die Ergebnisse nicht nach oben (Wie RiggsFolly sagen wurde). Sie shout holen Gebrauch() von fetchall()

http://php.net/manual/en/pdostatement.fetchall.php http://php.net/manual/en/pdostatement.fetch.php

+0

Sorry Misha, aber dies ist ** keine Antwort ** es ist ein Kommentar, und einer, der bereits gemacht wurde, mit einer bereits geposteten Antwort. Sie haben fast genug Rep, um Kommentare zu machen, also riskieren Sie nicht, Stimmen für eine Antwort zu bekommen, die nicht antwortet – RiggsFolly

+0

Auch er benutzt 'mysqli_', also ist ein Link zu einer PDO-Methode nicht wirklich sehr hilfreich! – RiggsFolly

Verwandte Themen