Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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
Php 主键增加不有序_Php_Mysql - Fatal编程技术网

Php 主键增加不有序

Php 主键增加不有序,php,mysql,Php,Mysql,我有一个卡片名称列表和一个插入卡片的php文件。当我插入一张卡片并将其删除到数据库中,然后再次插入时。主密钥在卡删除后增加。例如: Card number 1 Card number 2 Card number 3 --> if i delete this value and inserte again the primary key is 4 not 3 how to fix that problem ? 这是我的密码 <?php // this file show ca

我有一个卡片名称列表和一个插入卡片的php文件。当我插入一张卡片并将其删除到数据库中,然后再次插入时。主密钥在卡删除后增加。例如:

Card number 1
Card number 2
Card number 3 --> if i delete this value and inserte again the primary key is 4 not 3 how to fix that problem ?
这是我的密码

    <?php
// this file show card name and picture
    include("connect.inc");
    $connect=mysqli_connect($host,$username,$password,$dbname) or die ("can't connect to server");
    $query="SELECT * FROM dragon ";
    $result=mysqli_query($connect,$query) or die("can't execute query");
    echo $_SESSION['count'];
    echo "<hr/>";

    while($row=mysqli_fetch_assoc($result))
    {
        extract($row);
        echo $type."<br/>";
        echo $CardName."/";
        echo $Description;
        echo "<br/>";
        echo "<a href='../dragon/{$picture}' border='0'> <img src='../dragon/{$picture}' border='0' width='300' height='300'/></a>";

        echo "<hr/>";

    }


    ?>

这是预期行为,换句话说,这就是人工智能的工作原理。不要指望ID是连续的,你应该自己跟踪它以备需要。当您使用mysqli完成了一个insert之后,如果您以后需要它作为参考,您可以在查询完成后获取“insert id”

有关获取插入id的详细信息,请参阅:
这是预期行为,换句话说,这就是人工智能的工作原理。不要指望ID是连续的,你应该自己跟踪它以备需要。当您使用mysqli完成了一个insert之后,如果您以后需要它作为参考,您可以在查询完成后获取“insert id”

有关获取插入id的详细信息,请参阅:
这不是问题。使用自动递增主键时,分配给输入的键是尚未分配的最小正值。这在许多方面都很有用。例如,您有另一个带有外键的表。如果您的设计不好,您可以从此表中删除一行并保留孤立外键。这是一个容易检测到的错误,但如果插入另一行时,它获取了已删除行的键,则您的外键将指向其他数据。这个错误很难发现。因此,问题不在于如何分配密钥,而在于您的期望。你可能会考虑问你想要达到什么目的,以便为你的工作找到一个有用的答案。

<这不是问题。使用自动递增主键时,分配给输入的键是尚未分配的最小正值。这在许多方面都很有用。例如,您有另一个带有外键的表。如果您的设计不好,您可以从此表中删除一行并保留孤立外键。这是一个容易检测到的错误,但如果插入另一行时,它获取了已删除行的键,则您的外键将指向其他数据。这个错误很难发现。因此,问题不在于如何分配密钥,而在于您的期望。您可能会考虑询问您想要达到什么目的,以便为您的工作找到一个有用的答案。

< p>我看到您没有发布任何与删除查询相关的代码,所以如果您在SQL中使用了删除,则手动使用以下代码。
ALTER TABLE dragon AUTO_INCREMENT=1

这将重置自动递增,sql将插入下一个最高的整数


请参见

我看到您没有发布任何与删除查询相关的代码,因此,如果您在sql中手动使用delete,请使用以下代码

ALTER TABLE dragon AUTO_INCREMENT=1

这将重置自动递增,sql将插入下一个最高的整数



请参见

自动增量关键点就是这样工作的。。。您可以禁用该字段的自动增量并手动添加键。这是预期的行为,如果下一个键是4,而不是3,会有什么问题?这不是“问题”。这不应该是什么问题。。。。自动增量键应该是唯一的,不一定是连续的:如果您的代码依赖于增量编号,那么您应该自己处理,并且独立于PKYes。一般来说,如果您试图“修复”这个“问题”,这可能是您的设计错误的迹象。我们可能需要知道为什么这会导致问题,以知道建议您做什么。这就是自动递增键的工作方式。。。您可以禁用该字段的自动增量并手动添加键。这是预期的行为,如果下一个键是4,而不是3,会有什么问题?这不是“问题”。这不应该是什么问题。。。。自动增量键应该是唯一的,不一定是连续的:如果您的代码依赖于增量编号,那么您应该自己处理,并且独立于PKYes。一般来说,如果您试图“修复”这个“问题”,这可能是您的设计错误的迹象。我们可能需要知道为什么这会导致问题,以知道建议您做什么。正如我上面所说的,在您做类似的事情之前,您需要认真思考,就个人而言,我会尽很大努力避免它。嗯,似乎他需要能够正确地指向插入的行,以及您如何在不使用插入id的情况下执行该操作,我无法理解这种关系。很好,但同样,如果您需要跟踪插入的卡的id,我将使用$insert_id。正确地指向插入的行,但它们不是连续的,而是两种不同的动物。现在看来,人们的期望已经得到了理顺。一开始看起来像是一个暴露代理关键问题的人,他们总是指向一个有严重缺陷的设计。同意:)我只是向他指出使用$insert_id是一种可能性,因为我理解这个问题,因为他需要后续AI作为参考。我不知道我为什么这么做。正如我上面所说的,在你做这样的事情之前,你需要好好想想,就我个人而言,我会花很长的时间来避免它。好吧,他似乎需要能够正确地指向插入的行,并且你将如何在不使用插入id的情况下做到这一点,我无法理解某种关系。很好,但再一次,如果您需要跟踪插入的卡的id,我将使用$insert_id..正确地指向插入的行,但是它们不是连续的,而是两个不同的动物。现在看来,人们的期望已经得到了理顺。一开始看起来像是一个暴露代理关键问题的人,他们总是指向一个有严重缺陷的设计。同意:)我只是向他指出使用$insert_id是一种可能性,因为我理解这个问题,因为他需要后续AI作为参考。我不知道我为什么这么做。我永远不会使用这种方法,因为它会造成严重的性能问题。每次
<?php
$labels=array("type"=>"type",
                "CardName"=>"Card Name",
                "Description"=>"Description",
                "atk"=>"Attack",
                "def"=>"Defend",
                "picture"=>"picture");

    echo "<form action='InsertCard.php' method='POST'>";
    echo "<h2>Insert new card </h2>";
    foreach($labels as $keys =>$values)
    {
        echo "$values <input type='text' name='$keys'/><br/>";
    }
    echo "<input type='submit'  value='insert new cards'/>";
    echo "<input type='submit' name='return' value='return'/>";
    echo "</form>";

?>
<?php
$labels=array("type"=>"type",
                "CardName"=>"Card Name",
                "Description"=>"Description",
                "atk"=>"Attack",
                "def"=>"Defend",
                "picture"=>"picture");

if(@isset($_POST['return']))
{
    header("Location:ShowCatalog.php");
}
include("connect.inc");
$connect=mysqli_connect($host,$username,$password,$dbname) or die("can't connect to server");

foreach($_POST as $keys =>$values)
{
    if(empty($values))
    {
        if($keys=='type' or $keys=='CardName' or $keys=='Description' or $keys=='picture')
        {
            $empty_values[]=$keys;
        }
    }
    else
    {
        if($keys=='type')
        {
            if(!preg_match("/^[A-Za-z -]{4,15}$/",$values))
            {
                $invalid_data[]=$keys;
            }
        }
        elseif($keys=='CardName')
        {
            if(!preg_match("/^[A-Za-z -]{4,30}$/",$values))
            {
                $invalid_data[]=$keys;
            }
        }
        elseif($keys=='Description')
        {
            if(!preg_match("/^[A-Za-z., -]{4,255}$/",$values))
            {
                $invalid_data[]=$keys;
            }
        }
        elseif($keys=="atk" or $keys=="def")
        {
            if(!preg_match("/^[0-9]{3,5}$/",$values))
            {
                $invalid_data[]=$keys;
            }
        }
        elseif($keys=='picture')
        {
            if(!preg_match("/^[A-Za-z -]{4,30}(.jpg)$/",$values))
            {
                $invalid_data[]=$keys;
            }
        }
        /*else
        {
            $clean_data[$keys]=trim(strip_tags($values));
        }*/
    }
}

if(@sizeof($empty_values)>0 or @sizeof($invalid_data)>0)
{
    if(@sizeof($empty_values)>0)
    {
    $join=join(", ",$empty_values);
    $msg="You forgot to input: $join<br/>";
    echo $msg;
    }
    if(@sizeof($invalid_data)>0)
    {
    $join=join(", ",$invalid_data);
    $msg="Invalid data: $join";
    echo $msg;
    }
    echo "<form action='$_SERVER[PHP_SELF]' method='POST'>";
    echo "<h2>Insert new card </h2>";
    foreach($labels as $keys =>$values)
    {
        echo "$values <input type='text' name='$keys'/><br/>";
    }
    echo "<input type='submit'  value='insert new cards'/>";
    echo "<input type='submit' name='return' value='return'/>";
    echo "</form>";
    exit();
}

foreach($_POST as $keys =>$values)
{
    $queried_data[$keys]=mysqli_real_escape_string($connect,trim(strip_tags($values)));
}
$check_existence="SELECT CardName FROM dragon WHERE CardName=";
foreach($queried_data as $keys =>$values)
{
    if($keys=="CardName")
    {
        $check_existence.="'".$values."'";
    }
}
$checking_result=mysqli_query($connect,$check_existence)or die("can't execute query ".mysqli_error($connect));
    if(mysqli_affected_rows($connect)>0)
    {
        echo "card is already existed !";
        include("ShowForm.php");
        exit();
    }
    else
    {
        $query="INSERT INTO dragon(";
        foreach($queried_data as $keys =>$values)
        {
            $query.=$keys.",";
        }
        $query.=")";
        $query=preg_replace("/\,\)/",")",$query);
        $query.="VALUES(";
        foreach($queried_data as $keys =>$values)
        {
            if($keys=="type" or $keys=="CardName" or $keys=="Description")
            {
                $values=ucfirst($values);
            }
            if($keys=="atk" or $keys=="def")
            {
                if(empty($values))
                {
                    $values='n/a';
                }
            }
            $query.="'".$values."',";   
        }
        $query.=")";
        $query=preg_replace("/\,\)/",")",$query);
        $result=mysqli_query($connect,$query);
        echo "card is inserted !";
    }
?>