row()[0], works fine on local server

I have a pagination function implemented in php(with the help tutorials). It works fine on local server. But when uploaded to web server it shows syntax error.

Error: Parse error: syntax error, unexpected '[' on line 46

Line 46 is:

    ')->fetch_row()[0];

Here is my full code:

        <?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>';
        }
    ?>

Is it related to PHP version? Can anyone help me with this?

PHP version: in my local server: 5.5.15 web server: 5.2

Thanks in advance,


Yes, this is related to the version of PHP you are running. Array dereferencing syntax is only valid from PHP 5.4. So, if your local machine has 5.4 installed, you can dot this:

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

In previous versions of PHP you can achieve the same result with

list($total) = $dbc->query(...)->fetch_row();
链接地址: http://www.djcxy.com/p/69550.html

上一篇: 我的网页在我的服务器上没问题,但是我的本地副本给出了解析器错误

下一篇: row()[0],在本地服务器上正常工作