2017-02-16 5 views
1

Я слежу за этим руководством по CRUD в php, но я столкнулся с ошибкой, которую я не смог перехватитьНеустранимая ошибка. Вызов функции-члена prepare() на null в C: xampp htdocs CRUD read.php в строке 29

Неустранимая ошибка. Вызовите функцию-член prepare() на null в C: \ xampp \ htdocs \ CRUD \ read.php в строке 29 **, и эта строка с ошибкой 29 моего кода равна ** $ stmt = $ conn-> prepare ($ query);

read.php файл это

<!DOCTYPE html> 
<html> 
<head> 
    <title>PDO - Read Records - -PHP CRUD Tutorial</title> 

    <!--Bootstrap--> 
    <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.min.css"> 

    <script src="bootstrap/js/bootstrap.min.js"></script> 
    </head> <body> 
    <div class="container"> 
     <div class="page-header"> 
      <h1>Read Products</h1> 
     </div> 
     <!--Dynamic content will go here--> 

     <?php 

     // include database connection 
     include_once 'config/database.php'; 

     // select all data 
     $query = "SELECT id, name, description, price FROM products ORDER BY id DESC"; 

     // prepare query for execution 
     $stmt = $conn->prepare($query); 

     // execute the query 
     $stmt->execute(); 

     // this how to get number of rows returned 
     $num = $stmt->rowCount(); 

     // link to create record form 
     echo "<a href='create.php' class='btn btn-primary m-b-1em'>Create New Product</a>"; 

     // check if more than 0 records found 
     if($num > 0) { 
      echo "<table class='table table-hover table-responsive table-bordered'>"; // start table 

      // creating our table heading 
      echo "<tr>"; 
      echo "<th>ID</th>"; 
      echo "<th>Name</th>"; 
      echo "<th>Description</th>"; 
      echo "<th>Price</th>"; 
      echo "<th>Action</th>"; 
      echo "</tr>"; 

      // retrieve our table contents 
      //fetch() is faster than fetchAll() 

      while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
       // extract row 
       // this will make $row['firstname'] to 
       // just $firstname only 
       extract($row); 

       // creating new tablerow per record 
       echo "<tr>"; 
        echo "<td>{$id}</td>"; 
        echo "<td>{$name}</td>"; 
        echo "<td>{$description}</td>"; 
        echo "<td>&#36;{$price}</td>"; 
        echo "<td>"; 

       // read one record 
       echo "<a href='read_one.php?id={$id}'class=''btn btn-info m-r-1em'>Read</a>"; 

       // we will use this link to the next part of the post 
       echo "<a href='update.php?id={$id}' class='btn btn-primary m-r-1em'>Edit</a>"; 

       // we will use this link to the next part of the post 
       echo "<a href='#' onClick='delete_user({$id});' class='btn btn-danger'>Delete</a>"; 

       echo "</td>"; 
      echo "</tr>"; 
      } 
      //end table 
     echo "</table>"; 

     } 

     // if no records found 
     else{ 
      echo "<div class='alert alert-danger'>No records found.</div>"; 
     } 
     ?> 

    </div><!--end of container--> 

    <!--Jquery (necessary for bootstrap's javascript plugin)--> 
    <script src="jquery-ui-bootstrap-jquery-ui-bootstrap-71f2e47/js/jquery-1.8.3.min.js"> 
</script> 
</body> 
</html> 

database.php файл:

<?php 
    //variables used to connect to the database 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "1phpbeginnercrudlevel1"; 

    //create a connection using the PDO extension 
    try{ 
     $conn = new PDO("mysql:host=$servername;dbname=1phpbeginnercrudlevel1",$username,$password); 

     //set the PDO error mode to exception 
     echo "Connected successfully"; 
    } 
    catch(PDOException $e) 
    { 
     echo "Connection failed: " .$e->getMessage(); 
    } 


    ?> 
+3

http://php.net/ manual/en/pdo.error-handling.php --- http://php.net/manual/en/function.error-reporting.php –

+2

Дорогой отец ред! Кстати, может быть, ваше соединение терпит неудачу. Проверьте ссылку Fred и объявите $ conn до try/catch со значением, просто чтобы он существовал. – Grork

+0

Я действительно пробовал об этом, но все же дает мне ту же ошибку .... что может быть неправильно с этой строкой кода $ stmt = $ conn-> prepare ($ query); –

ответ

-1

Похоже ваше соединение не удалось, или в том числе database.php был не удалось

+0

эй спасибо, я понял, что он не обращался к файлу базы данных, поэтому я решил включить его непосредственно в мой файл read.php вместо использования команды include ... но есть ли какие-либо проблемы с этим? как я могу исправить эту проблему, чтобы я мог использовать команду include –

+0

Вы должны проверить соединение. Поэтому, если ($ conn), продолжайте работу. Else показать сообщение об ошибке –