2016-11-16 9 views
-1

Hallo, ich möchte nur eine eigene Funktion schreiben, um den Optionswert von mysql zu erhalten. Meine Datei index.php auf diese Weise sieht:Schwerwiegender Fehler: Aufruf einer Memberfunktion query() auf Null in

<? 
include ('config.php'); // here i have database connection details 
include ('global-functions.php'); 
include ('minifier.php'); 
include ('cache-start.php'); 
?> 
<!DOCTYPE html> 
<html lang="jezyk strony z bazy danych"> 
USTAWIC META! sekcje head<br> 
Sprawdzić czy dodac przekierowanie w php z www na bez www !! 
<head> 

    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 


(...) rest of the file 

config.php aussieht:

<?php 

$host = "localhost"; 
$dbname = "xxxx"; 
$username = "xxx"; 
$password = "xxxx"; 

// Create connection 
$conn = new mysqli($host, $username, $password, $dbname); 

?> 

Jetzt versuche ich Funktion zu tun angegebene Option zu nehmen, habe ich diese Funktion in global-Funktionen. php:

<?php 


// Get option 

function get_option($option_name) { 

    $sql = "SELECT opcja_value FROM opcje WHERE opcja_name='" . $option_name . "'"; 
    $result = mysqli_fetch_array($conn->query($sql)); 

    return $result[$option_name]; 

} 

?> 

Jetzt werde ich Funktion aufrufen, um Wert meiner Option zu erhalten. Also:

echo get_option('cache'); 

oder tun einfach, wenn:

if (get_option('cache') == '1') { 
// do stuff 
} else { 
echo 'option disabled, sorry :('; 
} 

Nach Anruffunktion i Fatal error erhalten:

Fatal error: Call to a member function query() on null in /framework/includes/global-functions.php on line 10

+0

Wo ist '$ conn' erstellt, wenn es in einer Funktion? – JustOnUnderMillions

+2

** Scope **, ___Scope___, scope. Übergeben Sie '$ conn' als Parameter Ihrer Funktion. – RiggsFolly

+0

Ok, wenn ich $ conn hinzufüge, um zu funktionieren und wenn ich es anrufe, sehe ich keine Fehler, aber es funktioniert nicht. Funktion gibt keinen Wert aus SQL zurück. –

Antwort

0

Ich schlage vor, das Lesen this

Sie eine globale Variable zugreifen innerhalb einer Funktion ($conn). Um diese Variable innerhalb der Funktion zugänglich zu machen, benutzen Sie einfach global $conn; zu Beginn Ihrer Funktion.

5

Umfang Umfang Umfang! $conn existiert nicht im Rahmen Ihrer Funktion. Sie können es mit global, erklären oder es in geben, etwa so:

function get_option($option_name, $conn) { // Pass in $conn here 

    $sql = "SELECT opcja_value FROM opcje WHERE opcja_name='" . $option_name . "'"; 
    $result = mysqli_fetch_array($conn->query($sql)); 

    return $result[$option_name]; 

} 
+0

Hallo, danke für die Antwort. Ich ändere nur Code und ich habe jetzt folgendes: Fehlendes Argument 2 für get_option(), in /framework/includes/minifier.php in Zeile 4 aufgerufen und definiert in /framework/includes/global-functions.php in Zeile 7 // My minifier.php Datei nur diese Funktion aufrufen. Wie kann ich conn global verwenden? Meaby Problem ist mit include, muss ich verwenden müssen ?? –

+0

Sie müssen auch $ conn hinzufügen, wenn Sie die Funktion 'get_option ($ optionshere, $ conn);' aufrufen – aynber

Verwandte Themen