fetch_row()错误[0],在本地服务器上正常工作

fetch_row()错误[0],在本地服务器上正常工作

问题描述:

我有一个在php中实现的分页函数(附带帮助教程)。它在本地服务器上正常工作。但是当上传到Web服务器时,它显示语法错误。fetch_row()错误[0],在本地服务器上正常工作

错误:解析错误:语法错误,意想不到的 '[' 上线46

46号线:

')->fetch_row()[0]; 

这里是我的全码:

 <?php 
     if(isset($_POST['delete'])) { 
      $id = $_POST['delete']; 
      // Connect to the database 
    $dbc = mysqli_connect('xxxxxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxx', 'xxxxxxxxxxxxxxx', 
    'xxxxxxxxxxxxxxxx') 
       or die('Error connecting to MySQL server.'); 

      $query = "DELETE FROM questions WHERE question_id = '$id'"; 

      $result = mysqli_query($dbc, $query) 
       or die('Error querying database.'); 
      mysqli_close($dbc); 
     } 
     try { 
$dbc = mysqli_connect('xxxxxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxx', 'xxxxxxxxxxxxxxx', 
    'xxxxxxxxxxxxxxxx') 
      or die('Error connecting to MySQL server.'); 

      // Find out how many items are in the table 
      $total = $dbc->query(' 
      SELECT 
       COUNT(*) 
      FROM 
       questions 
      ')->fetch_row()[0]; 

      // How many items to list per page 
      $limit = 3; 

      // How many pages will there be 
      $pages = ceil($total/$limit); 

      // What page are we currently on? 
      $page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
      'options' => array(
      'default' => 1, 
      'min_range' => 1, 
      ), 
      ))); 

      // Calculate the offset for the query 
      $offset = ($page - 1) * $limit; 

      // Some information to display to the user 
      $start = $offset + 1; 
      $end = min(($offset + $limit), $total); 

      // The "back" link 
      $prevlink = ($page > 1) ? '<a href="?page=1" title="First page">&laquo;</a> <a href="?page=' . ($page - 1) . '" title="Previous page">&lsaquo;</a>' : '<span class="disabled">&laquo;</span> <span class="disabled">&lsaquo;</span>'; 

      // The "forward" link 
      $nextlink = ($page < $pages) ? '<a href="?page=' . ($page + 1) . '" title="Next page">&rsaquo;</a> <a href="?page=' . $pages . '" title="Last page">&raquo;</a>' : '<span class="disabled">&rsaquo;</span> <span class="disabled">&raquo;</span>'; 

      // Display the paging information 
      echo '<div id="paging"><p>', $prevlink, ' Page ', $page, ' of ', $pages, ' pages, displaying ', $start, '-', $end, ' of ', $total, ' results ', $nextlink, ' </p></div>'; 

      // Retrieve the score data from MySQL 
      $query = "SELECT * FROM questions ORDER BY question_id LIMIT $offset, $limit"; 
      $data = mysqli_query($dbc, $query); 
      echo "<div class=\"questions_table\">"; 
      if (mysqli_num_rows($data)>0) { 
       echo "<form method=\"POST\">"; 
       echo "<table>"; 
       echo "<tr><th>Question Type</th><th>Question Text</th><th>option 1</th><th>option 2</th>" 
        ."<th>option 3</th><th>option 4</th><th>Answer</th><th>Delete Question</th></tr>"; 
       // Display the results 
       $i = 0; 
       while ($row = mysqli_fetch_array($data)) { 
        echo "<tr>"; 
        echo '<td>'. $row['question_type']. '</td>'; 
        echo '<td>'. $row['question_text']. '</td>'; 
        echo '<td>'. $row['option1']. '</td>'; 
        echo '<td>'. $row['option2']. '</td>'; 
        echo '<td>'. $row['option3']. '</td>'; 
        echo '<td>'. $row['option4']. '</td>'; 
        echo '<td>'. $row['answer']. '</td>'; 
        echo "<td><button class='ph-button ph-btn-red ph-button-delete' type='submit' value='".$row['question_id']."' name='delete'>Delete</button></td><br>"; 
        echo "</tr>"; 
       } 
       echo "</table>"; 
       echo "</form>"; 
       echo "</div>"; 

      } else { 
       echo '<p>There are no questions in the database. Please add them.</p>'; 
      } 

     } catch (Exception $e) { 
      echo '<p>', $e->getMessage(), '</p>'; 
     } 
    ?> 

是否相关到PHP版本?谁能帮我这个?

PHP版本: 在我的本地服务器:5.5.15 Web服务器:5.2

在此先感谢,

+0

如果在代码中的用户名/密码组合相同的结果你的实际的,你可能想考虑改变他们在代码和/或服务器的安全性。 – gabe3886 2014-11-04 14:50:45

+0

感谢提醒... – 2014-11-04 14:53:00

是的,这关系到你正在运行的PHP版本。数组解引用语法仅在PHP 5.4中有效。所以,如果你的本地计算机上安装了5.4,你可以点这一点:

$total = $dbc->query(...)->fetch_row()[0]; 

在PHP以前的版本,你可以实现与

list($total) = $dbc->query(...)->fetch_row(); 
+0

感谢您的快速回答。得到它的工作。我只能接受3分钟的答案。 – 2014-11-04 14:58:19