2013-03-26 3 views
0

Я новичок в функциях mysqli. Я написал код для простой функции выбора. Вот что я сделалПроблема с mysqli

  <?php 
     #---- ini settings(ini)--- 
     ini_set('display_errors', '1'); 
     #---------(/ini)------------ 

     #-------initialisations(init)--- 
     $dbUser = 'myuser'; 
     $dbPass = 'mypass'; 
     $dbhost = 'localhost'; 
     $dbname = 'mydb'; 
     #------------(/init)------------ 

     #---- database connection (db connect)----- 
     $mysqli = new mysqli($dbhost, $dbUser, $dbPass, $dbname); 
     $is_error = ($mysqli->connect_errno)?true:false; 
     if($is_error) 
     { 
      echo $mysqli->connect_error; 
     } 

     #-----------------(/ db connect)----------- 

     /** ------------ queries ----------  **/ 
     $stmt = $mysqli->prepare("SELECT * FROM dept"); 
        if(! $stmt) 
     { 
      echo "statement not prepared well"; 
     } 
     else 
     { 
      echo $mysqli->error; 
     } 
     if (!$stmt->execute()) { 
      echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error; 
     } 

     if (!($res = $stmt->get_result())) { 
      echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error; 
     } 
     /** ------------------------------- **/ 

     #------result ---- 
     var_dump($res->fetch_all()); 
     #---------(/result)---- 

     ?> 

Но когда я запускаю этот код ничего не получает отображается без ошибки, нет данных только белой пустой страница .. WHT я пропускаю .....? Или как мне отладить его

Заранее спасибо.

+0

я думаю, что вы используете груши будет все нормально на стороне груши? –

+0

@Praveenkalal no Я просто использую apache на linux – alwaysLearn

+0

Работает отлично для меня. Вы не проверяете, выполняется ли 'prepare()' успешно, но это не должно быть проблемой, если существует таблица 'dept': -? –

ответ

0

Ваше соединение с базой данных не удается, но внутри этого отказа блока у вас есть неправильное имя переменной выводится и, следовательно, ничего не отображается

$mysqliObj->connect_error; // no object named $mysqliObj there 

После

$is_error = ($mysqli->connect_errno)?true:false; 
if($is_error) 
     { 
      echo $mysqliObj->connect_error; 
     } 

Должно быть

$is_error = (mysqli_connect_errno)?true:false; 
if($is_error) 
     { 
      echo $mysqli->connect_error; 
     } 
+0

'mysqli :: connect_errno' - это способ OOP использования mysqli – LotusH

+2

Даже тогда' $ mysqliObj-> 'неверное имя объекта –

+0

спасибо, что я этого не заметил .. но все же cannt it working – alwaysLearn

0
// change settings for error handler to show errors 
// $this setup is used for checking errors for development to be shown.... 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

Попробуйте добавить еще, чтобы убедиться, что запрос успешно выполнен, но результата нет.

if (!$stmt->execute()) { 
      echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error; 
     } 
// add else 
else{ 
     echo "Query is succesfully executed but no result fetch" 
} 

заменить ваш запрос по этому, чтобы подсчитать количество DATAS

if ($result = mysqli_query($mysqli, "SELECT * FROM dept")) { 
    printf("Select returned %d rows.\n", mysqli_num_rows($result)); 

    /* free result set */ 
    mysqli_free_result($result); 
} 
+0

не повезло ... другое предложение :( – alwaysLearn

+0

Это действительно лучший вариант для пустой страницы. @new_developer, вы подтвердили, что на самом деле можете видеть сообщения об ошибках (например, форсировать уведомление, читая неопределенную переменную)? Вы проверили «Просмотр источника», в вашем браузере, чтобы убедиться, что ошибки не скрыты внутри HTML? –

+0

страница с исходным кодом пуста – alwaysLearn

0

Взгляните на этом блоке кода, я только что над ним очень быстро, так что, возможно, не пойманы все, кроме он должен указать вам в правильном направлении.

<?php 
#---- ini settings(ini)--- 
ini_set('display_errors', '1'); 
#---------(/ini)------------ 

#-------initialisations(init)--- 
$dbUser = 'myuser'; 
$dbPass = 'mypass'; 
$dbhost = 'localhost'; 
$dbname = 'mydb'; 
#------------(/init)------------ 

#---- database connection (db connect)----- 
$mysqli = @new mysqli($dbhost, $dbUser, $dbPass, $dbname); 
#-----------------(/ db connect)----------- 

if(!$mysqli) { 
    echo $mysqli->connect_errno.": ".$mysqli->connect_error; 
} else { 
    /** ------------ queries ----------  **/ 
    $stmt = $mysqli->prepare("SELECT * FROM dept;"); 
    $stmt->execute(); 
    if (!$stmt) { 
     echo "Execute failed: (" . $mysqli->errno . ") " . $mysqli->error; 
    } else { 
     $res = $stmt->get_result(); 
     if(!$res) { 
      echo "Getting result set failed: (" . $mysqli->errno . ") " . $mysqli->error; 
     } else { 
      var_dump($res->fetch_all()); 
     } 
    } 
    $mysqli->close($mysqli); 
} 
?> 
+0

до сих пор никаких изменений нет .. Я не понимаю, почему я получаю только белую страницу .. какие-то настройки или что-то, что я могу пропустить ..? – alwaysLearn

+0

Является ли модуль mysqli установленным на вашем веб-сервере? Если вы идете использовать phpinfo(), появляется ли в списке модуль mysqli? – llanato

+0

да активен – alwaysLearn

0

Вы пропустили букву «s»

ini_set('display_errors', '1'); 
+0

Спасибо, что заметили это. Это была просто опечатка, выписывая код .. и до сих пор не решена моя проблема. – alwaysLearn

+0

@new_developer Могу я спросить, какую версию PHP вы используете? – Amir

+0

его решить сейчас ... Мне нужно установить mysqlnd .. Спасибо за вашу помощь – alwaysLearn

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