我的数据库中只有一个表只有5列,它有大约13000行数据,当我在我的php页面上获取它时,它输出的数据非常慢。任何人都可以建议解决方案。
代码如下:
<?php
$sno = 1 ;
$form = 0 ;
$data = selectloop('data') ;
foreach($data as $datalist){
$form = $form + 1 ; ?>
<tr class="odd gradeX">
<td ><?php echo $sno ; ?></td>
<td ><?php echo $datalist['domain_name'] ; ?></td>
<td ><?php echo $datalist['registrant_name'] ; ?></td>
<td ><?php echo $datalist['registrant_city'] ; ?></td>
<td ><?php echo $datalist['registrant_state'] ; ?></td>
<td ><?php echo $datalist['registrant_email'] ; ?></td>
<td ><?php echo $datalist['registrant_phone'] ; ?></td>
<td>
<?php if(isset($_POST['submit'.$form])) {
mysql_query("update data set remarks='".$_POST['remarks']."' where id='".$_POST['id']."' ") ;
header("location:datalist.php") ; } ?>
<form method="post">
<input type="hidden" class="form-control" name="id" value="<?php echo $datalist['id'] ; ?>" >
<input type="text" class="form-control" name="remarks">
<button class="btn btn-primary btn-xs" name="submit<?php echo $form ;?>" > Submit </button>
</form>
</td>
</tr>
<?php $sno = $sno + 1 ; } ?>
</tbody>
答案 0 :(得分:1)
您可以添加分页,这意味着您使用LIMIT
和自动增量列作为主键,在本例中为id
。
PHP源代码:
$start = $_POST['start'];
$db = mysqli_connect("localhost","user","pass","dbName"); // MYSQLi API
$sql = "SELECT * FROM data WHERE id >= '$start' LIMIT 10"; // Default limit
foreach ($db->query($sql) as $row):
echo '<tr>';
[...]
echo $row['column'];
[...]
echo '</tr>';
endif;
然后,您可以添加一个客户端处理程序,该处理程序会在“下一页”&#39;后面向PHP文件发送 POST 请求。按下按钮。它集成了实时分页,更整洁的页面和更少的页面加载时间。
jQuery POST示例:
$(document).ready(function () {
var count = 1; // starting id
$('#nextpage').click(function () {
count = count +10;
$.post('phpfile.php', { start: count })
.done(function (data)
{
$('#output').innerHTML = data;
});
});
});
HTML示例:
<div class='display-content'>
<div id='output'></div>
<div id='nextpage'>--Next-Page-></div>
</div>
希望这对您有所帮助,但请记住,您需要先在PHP中删除$start
,然后再将其传递给查询,因为您未使用PDO
。
更新:确保阅读大量这些评论,
MYSQL
已弃用且不会在较新的PHP版本中提供 - 尤其是 PHP 7 + - 所以我建议您考虑安全性,了解PDO
或至少MYSQLi
。
其他有用的资源:
MYSQLi Manual
PDO Manual
LIMIT Query
Preventing SQLi Injections
答案 1 :(得分:-1)
我强烈的直觉说你正试图输出大约13,000行到你的浏览器。当然,这会减慢速度。它不是MySQL的错误,尽管它很可能是由于您的查询中没有LIMIT子句。
为查询添加LIMIT:
$query = "SELECT * FROM `table` LIMIT x"; // where x is the number of records to be outputted