我在php中实现了一个分页功能(带有帮助教程)。它在本地服务器上运行正常。但是当上传到Web服务器时,它会显示语法错误。
错误:解析错误:语法错误,第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">«</a> <a href="?page=' . ($page - 1) . '" title="Previous page">‹</a>' : '<span class="disabled">«</span> <span class="disabled">‹</span>';
// The "forward" link
$nextlink = ($page < $pages) ? '<a href="?page=' . ($page + 1) . '" title="Next page">›</a> <a href="?page=' . $pages . '" title="Last page">»</a>' : '<span class="disabled">›</span> <span class="disabled">»</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 网络服务器:5.2
提前致谢,
答案 0 :(得分:0)
是的,这与您运行的PHP版本有关。数组解除引用语法仅在PHP 5.4中有效。因此,如果您的本地计算机已安装5.4,您可以点这个:
$total = $dbc->query(...)->fetch_row()[0];
在以前的PHP版本中,您可以使用
获得相同的结果list($total) = $dbc->query(...)->fetch_row();