【问题标题】:php next id in databasephp 数据库中的下一个 id
【发布时间】:2011-03-16 01:19:04
【问题描述】:

我需要 php 下一个 id,例如:我在数据库中有这个 id:10、11、15、19、31、32、34 .....

$img_id=$_GET[img_id]; // 从浏览器获取图像 id
$行['id']; // 从数据库中获取 id

如何使用 php $i++ 并检查 id 是否在数据库中设置?并忽略空的id

因为我想把下一张图片放在底部。而一些图片被删除了!!

谢谢

【问题讨论】:

  • 你的问题还不清楚。 “我想把下一张图片放在底部”是什么意思?如果你想在表中插入另一行,只需插入它,qutoincrement 将自动设置 id

标签: php database next


【解决方案1】:

根据我对您的问题的理解,您的数据库中有一些行的 id 不连续(1、3、13、16 等),并且您希望通过使用循环中的连续数字搜索来访问这些行可能的 ID?

for($i=0; $i<100; $i++)
{
    $query = 'SELECT * FROM `table` WHERE `id` = ' . $i;
    $result = mysql_query($query);
    if(mysql_num_rows($result) > 0)
    {
        echo 'This id exists in the table: ' . $id . '<br />';
    }
}

100 在这里作为一个潜在的数字,但它应该可以满足您的需求。 有很多解决方案可以应用于您的问题,但对于您提出的问题,这将是我想到的最直接的解决方案。

【讨论】:

    【解决方案2】:

    目前还不清楚你想说什么。但我会试一试。

    我认为您的意思是您已经从表中删除了一些记录,并且在下一次插入中它不会从最后一个 MAX(id) 继续。为此,您可以尝试:

    正如下面提到的@col,永远不要在生产中使用它,只在你的测试环境中使用。一旦记录被删除,序列就会丢失。

    mysql_query("ALTER TABLE `table_name` AUTO_INCREMENT = 1");
    

    如果您有一个名为images 的表,其中id 的最大值为99,则您删除了此图像。您输入的下一张图片将包含id=100。所以 id 现在看起来像 97,98,100。这将强制 MySQL 从MAX(id) + 1 继续,所以它看起来是97,98,99

    也是一个从 php 获取最后插入 id 的便捷函数:

    $last_id = mysql_insert_id();
    

    现在$last_id 将拥有数据库中最后一个AUTO_INCREMENT 值。

    希望这会有所帮助。

    【讨论】:

    • 永远不要触摸自动增量字段,伙计
    • 听起来像是他想要的。也许我不应该假设很多。编辑了答案。
    • 好吧,虽然我们都是菜鸟,但我们都想要奇怪而有害的东西。但事实上,如果你想改变 autoincremrnt 字段,你要么不应该这样做,要么就是不需要 autoincrement
    • 就我个人而言,在大删除之后,我已经使用了几次。也许是我的强迫症。
    • 所以,你破坏了你的数据几次
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2014-06-20
    相关资源
    最近更新 更多