2013-05-29 5 views
0

Я впервые чувствую себя в php впервые за многие годы. Я пытаюсь выполнить простой оператор select. Я подтвердил, что оператор работает напрямую с mysql. Мой php не завершается. Я хотел бы знать, почему мой real_query не работает, я также хотел бы знать, как уговорить сообщение об ошибке из этого сценария. Вот код:Почему я не вижу сообщение об ошибке?

function getRoot($nid) 
{ 
    echo $nid; //displays 0 
    try 
    { 
     echo "Hello?"; //This displays 

     //Why doesn't this work?! 
     if($mysqli->real_query("SELECT * FROM gem, bundles WHERE gem.nid = bundles.baseNid AND bundles.nid = " . $nid)) 
     { 
      echo "dafuq?"; //does not display 
     } 
     else 
     { 
      echo "foo"; //doesn't display 
      echo $mysqli->error; //doesn't display 
     } 
    } 
    catch (Exception $e) 
    { 
     echo "Tralalalala"; //doesn't display 
    } 
    echo "teeheehee"; //doesn't display 
} 

Благодарим за помощь!

+1

У вас есть 'error_reporting' enabled и' display_errors' на вашем php.ini? (Предположим, что это машина разработки, установите error_reporting для E_ALL | E_STRICT и display_errors в On). – Maerlyn

+0

Где находится '$ mysqli'? –

+0

, по-видимому, либо это не правильный путь, либо у вас проблема зрения. O Кстати, я научился думать глобально, когда начал php ..: D – argentum47

ответ

6

Нет переменной $mysqli, объявленной в функции, поэтому ваш код создает FATAL ERROR - вы вызываете метод не-объекта. если $mysqli является глобальной переменной, вы должны добавить global $mysqli; в начале функции

+0

+1 но почему нет $ _mysqli !! это облегчило бы ситуацию – argentum47

4

$mysqli не определен в функции, а PHP генерирует фатальную ошибку, которая равна , а не, с использованием стандартных исключений.

Необходимо включить отчет об ошибках (display_errors установлен в On в php.ini или через ini_set, например: ini_set('display_errors', '1'););

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