2016-11-16 6 views
-1

Здравствуйте, я просто хочу написать собственную функцию, чтобы получить значение параметра из mysql. Мой файл index.php выглядит следующим образом:Неустранимая ошибка: вызов функции-функции-члена() на null в

<? 
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 файл выглядит:

<?php 

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

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

?> 

Теперь я пытаюсь сделать функцию, чтобы принять указанный вариант, я поставил эту функцию в глобальных-функциях. 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]; 

} 

?> 

Теперь я собираюсь вызвать функцию, чтобы получить значение моей опции. Итак:

echo get_option('cache'); 

или делать простой, если:

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

После вызова функции я получаю Фатальная ошибка:

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

+0

Где '$ conn' создан, при его использовании в функции? – JustOnUnderMillions

+2

** Сфера применения **, ___Scope___, scope. Pass '$ conn' как параметр вашей функции – RiggsFolly

+0

Хорошо, когда я добавляю $ conn к функции, и при ее вызове я не вижу ошибок, но это не работает. Функция не возвращает никакого значения из SQL. –

ответ

0

Я предлагаю читать this

Вы обращаетесь к глобальной переменной внутри функции ($conn). Чтобы сделать эту переменную доступной внутри функции, просто используйте global $conn; в начале вашей функции.

5

Сфера применения scope scope! $conn не существует в рамках вашей функции. Вы можете объявить его global, или передать его, например, так:

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

Привет, спасибо за ответ. я просто изменяю код, и теперь у меня есть это: Отсутствует аргумент 2 для get_option(), вызывается в /framework/includes/minifier.php в строке 4 и определен в /framework/includes/global-functions.php в строке 7 // My Файл minifier.php просто вызывает эту функцию. Как я могу использовать conn globaly? Meaby проблема с include, meaby я должен использовать require ?? –

+0

Вам также нужно добавить $ conn, когда вы вызываете функцию 'get_option ($ optionshere, $ conn);' – aynber

Смежные вопросы