2012-05-31 8 views
12

Ich versuche einige Funktionen für eine Website von mir zu bauen und einige von ihnen bestehen in Holen von Daten aus der MySQL-Datenbank. Wenn ich den Code außerhalb der Funktion teste, scheint es richtig zu funktionieren. Also hier ist es, die erste Seite:mysqli/mysql Abfrage innerhalb Funktion funktioniert nicht

require('db.php'); 
require('functions.php'); 

$email = '[email protected]'; 

if (user_exists($email) == true){ 
echo "Good news, this exists"; 
} 

Jetzt DB.php:

$db = new MySQLi("localhost","test","test","test"); 
if ($db->connect_errno){ 
    echo "$db->connect_errno"; 
} 

Und die functions.php-Datei:

function sanitize ($data){ 
    $db->mysqli_real_escape_string($data); 
} 
function user_exists($usermail){ 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 

Und der Fehler erhalte ich, wenn Zugriff auf die erste Datei ist:

Notice: Undefined variable: db in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

SO I habe die db.php benötigt/eingeschlossen wo $ db die mysqli connect ist. Und in derselben Datei (erste Datei) ich die Funktionen aufrufen, sich an functions.php

Vielen Dank im Voraus, ich Ihre Hilfe schätzen würde, da dies mich nerven ......

Antwort

21

Wahrscheinlich müssen Sie das Schlüsselwort global verwenden, andernfalls wird $db als lokale Variable betrachtet.

function sanitize ($data){ 
    global $db; 
    $db->mysqli_real_escape_string($data); 
} 

function user_exists($usermail){ 
    global $db; 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 
+0

Oh danke mein Freund :) Sie haben keine Ahnung, wie viel Zeit ich auf die Lösung dieses dumme Problem stellen :) Sie meinen Tag gerettet haben. Vielen Dank. – inrob

0

Versuchen Sie, eine Verbindung innerhalb der Funktion herzustellen, und die Verbindung muss enthalten sein, bevor Sie Funktionen hinzufügen.

Etwas wie folgt aus:

function user_exists($usermail){ 
    $db = new MySQLi("localhost","test","test","test"); 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 
+0

Danke für Ihren Vorschlag. Aber ich denke, das wäre keine gute Idee, die Verbindungsabfrage in jede einzelne Funktion aufzunehmen. Aber danke ;) – inrob

Verwandte Themen