2016-02-27 14 views
7

Im nhận được lỗi trên khi chạy mã dưới đây để hiển thị các đặt chỗ được thực hiện từ cơ sở dữ liệu.Gọi đến hàm thành viên fetch_assoc() trên boolean trong <path>

<?php 

      $servername = "localhost"; 
      $username = "*********"; 
      $password = "********"; 
      $dbname = "thelibr1_fyp"; 


      // Create connection 
      $conn = new mysqli($servername, $username, $password, $dbname); 
      // Check connection 
      if ($conn->connect_error) { 
       die("Connection failed: " . $conn->connect_error); 
      } 

      $sql = "SELECT id, tablename, numseats, person FROM confirms"; 
      $result = $conn->query($sql); 
      ?> 

      <table id="Confirms" border ="2" style="length:900px;width:350px;"> 
        <thead> 
        <tr style= "background-color: #A4A4A4;"> 
         <td>Booking ID:</td> 
         <td>Table No.:</td> 
         <td>No. of Seats:</td> 
         <td>Person:</td> 
        </tr> 
        </thead> 
       <tbody> 
        <?php 
         while(($row = $result->fetch_assoc()) !== null){ 
         echo 
         "<tr> 
          <td>{$row['id']}</td> 
          <td>{$row['tablename']}</td> 
          <td>{$row['numseats']}</td> 
          <td>{$row['person']}</td> 
         </tr>\n"; 
         } 
        ?> 
       </tbody> 
      </table> 

Tôi chỉ bắt đầu nhận được lỗi khi tôi bắt đầu lưu trữ trực tiếp, trên máy tính cá nhân của tôi, nó hoạt động tốt. Và kết nối databse cũng hoạt động tốt.

+0

Bạn cũng đã thử sự cố tương tự. – dhool

+0

Tôi đã thử mã của bạn, nó làm việc cho tôi, kiểm tra cơ sở dữ liệu và truy vấn của bạn? – C2486

+0

Đầu ra nào bạn nhận được sau $ result = $ conn-> truy vấn ($ sql); print_r ($ result); – C2486

Trả lời

-1

Vui lòng sử dụng nếu điều kiện có vòng lặp while và thử.

ví dụ:

if ($result = $conn->query($query)) { 

    /* fetch associative array */ 
    while ($row = $result->fetch_assoc()) { 

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

Tôi treid đề xuất của bạn và bây giờ loại bỏ các lỗi nhưng không có đầu ra đang được xuất ra và họ chắc chắn mục trong cơ sở dữ liệu được xuất. – dhool

8

Các truy vấn phương pháp có thể trở lại false thay vì một tập hợp kết quả trong trường hợp có lỗi. Đó là lý do tại sao bạn gặp lỗi trên lệnh gọi phương thức fetch_assoc, hiển nhiên là không tồn tại khi $ resultfalse.

Điều này có nghĩa là bạn có lỗi trong câu lệnh SELECT. Để hiển thị lỗi đó, hãy thực hiện điều này:

$result = $conn->query($sql) or die($conn->error); 

Có thể bạn có lỗi chính tả cho tên bảng hoặc tên cột. Có thể khi di chuyển đến máy chủ, bạn đã không tạo bảng đó chính xác và đã mắc lỗi chính tả ở đó.

Bạn thực tế sẽ thấy cùng một lỗi khi thực hiện cùng một truy vấn thông qua phpAdmin.

Ngoài ra, thay thế dòng này:

while(($row = $result->fetch_assoc()) !== null){ 

chỉ:

while($row = $result->fetch_assoc()) { 

Bạn cũng có thể thêm này để gỡ lỗi:

echo "number of rows: " . $result->num_rows; 
+0

OK để giúp đỡ trong đó tôi đã liên kết với tên cơ sở dữ liệu sai, cố định nhưng vẫn giống nhau ở chỗ không có đầu ra nào được xuất ra. Lỗi "hoặc chết ($ conn->)" hiện không trả về gì ngoài im không hiểu tại sao không có mục nào không được hiển thị. – dhool

+0

Đầu ra khi bạn chạy SELECT trực tiếp trong phpAdmin (đảm bảo bạn đang ở trên máy chủ phù hợp) là gì? – trincot

-1

Bạn cần phải cập nhật các php.ini tập tin cấu hình với máy chủ của nhà cung cấp máy chủ lưu trữ của bạn, tin tưởng tôi về điều này, nhiều hơn khả năng không có gì sai với mã của bạn. Nó đã cho tôi gần một tháng rưỡi để nhận ra rằng hầu hết các máy chủ lưu trữ không được cập nhật trên các tập tin php.ini, ví dụ. php 5.5 hoặc mới hơn, tôi tin.

0

xem mã sau đây .chỉnh sửa mã của bạn như thế.

$query="select * from articles"; 
    $result=$conn->query($query); 
    $row = $result->fetch_assoc(); 
    if($row) 
    { 
    echo $row['content']; 
    } 
echo "no results founded"; 
    ?> 
Các vấn đề liên quan