Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果行不存在,则跳过该行。MySQL/PHP_Php_Mysql_Row - Fatal编程技术网

如果行不存在,则跳过该行。MySQL/PHP

如果行不存在,则跳过该行。MySQL/PHP,php,mysql,row,Php,Mysql,Row,我正在制作一个个人网站。 我被困在博客上了。我有它,所以每页显示5个,当我的MySQL表中的ID没有中断时就可以了。 但是,我有删除博客的能力,这会把一切都搞砸,因为我的循环包含了丢失的id,并且没有显示任何内容,所以每页只有3到4个。 id为10的博客已被删除 我不打算展示所有的代码,但这里有一些 $i = $blog_count-(($currentpage*$maxperpage)-$maxperpage); while ($i >$blog_count-(($currentpag

我正在制作一个个人网站。 我被困在博客上了。我有它,所以每页显示5个,当我的MySQL表中的ID没有中断时就可以了。 但是,我有删除博客的能力,这会把一切都搞砸,因为我的循环包含了丢失的id,并且没有显示任何内容,所以每页只有3到4个。

id为10的博客已被删除

我不打算展示所有的代码,但这里有一些

$i = $blog_count-(($currentpage*$maxperpage)-$maxperpage);
while ($i >$blog_count-(($currentpage*$maxperpage)-$maxperpage)-$maxperpage){
//render the blogs
$i--;
}
$blog_count等于表中的行数。 我有另一个我一直在胡闹的变量,那就是$maxid。这只是最大的身份证号码

任何帮助都将不胜感激。我觉得我应该知道怎么做,但我被难住了

编辑:我将代码更改为

$start = $currentpage*$maxperpage-$maxperpage;
$query = "SELECT * FROM blogs ORDER BY id DESC LIMIT $start,$maxperpage";
$result=mysql_query($query) or die(mysql_error());
while ($blog = mysql_fetch_array($result)) 

它是有效的

好的,我有两个建议

使用MySQL limit子句,它将限制返回的结果量


或者使用另一个字段(如deleted)来确定该行是否已删除,因此该行仍在数据库中,但不处于活动状态。

您的问题似乎是没有正确使用数据库

您应该让数据库返回根据需要过滤和排序的行集合。在一个典型的博客场景中,文章可能处于非活动状态/尚未公开,您会要求数据库返回按日期排序的活动文章集合。阅读基本SQL,帮自己一个忙,使用一个像样的ORM作为数据库抽象层,使执行查询变得容易,将您与原始SQL隔离开来


如前所述,如果要进行分页,可以使用LIMIT获取行的子集。

如其他人所述,您不应该依赖博客文章的任意id字段。从数据库中按排序顺序提取帖子,然后以循环方式输出。下面是一些帮助您入门的示例代码:

$results = $connection->query("SELECT * FROM Posts LIMIT 5, 5 ORDER BY id DESC");
while ($row = $result->fetch_assoc())
{
//Pull data from the row and display it
}

因此,无论删除了哪些帖子,此代码都将从数据库中提取第6到第10篇帖子。LIMIT的第一个参数是要跳过的行数,因此第一页为0,第二页为5,等等,第二个参数是您希望它始终为5的最大结果数。

当前检索博客文章的SQL查询是什么?您在PHP中所做的工作以及跳过不存在的行的工作当然可以在您的SQL查询中完成。您知道MySQL中的limit子句吗?您发布的代码看起来太过分了!:哇,反应快!检索博客文章的查询是$query=SELECT*FROM blogs,其中id=.$i。;不,我没有。我几天前才开始学习PHP和MySQL。craig,我知道哈哈,但这是唯一对我有意义的方法。我想按日期排序,但我只是觉得按id排序会更容易,或者是一样的。谢谢你的信息
$results = $connection->query("SELECT * FROM Posts LIMIT 5, 5 ORDER BY id DESC");
while ($row = $result->fetch_assoc())
{
//Pull data from the row and display it
}