【问题标题】:ID reset in mysql在mysql中重置ID
【发布时间】:2015-08-16 12:17:29
【问题描述】:

我尝试在表事件中重置我的 ID,但 query("UPDATE events SET ID=".$i."WHERE ID=".$row['ID'];) 总是失败。知道为什么吗?

//getting the whole table from mysql
$query="SELECT * FROM events";
$results=mysql_query($query);
$size=mysql_num_rows($results);
echo($size);

//drop the primary key 
$query="ALTER TABLE events DROP PRIMARY KEY";
if(!(mysql_query($query)))
        echo("Query1 failed");

//reset ID
for($i=0;$i<$size;$i++){
    $row=mysql_fetch_assoc($results);
    $query=" UPDATE events SET ID=".$i."WHERE ID=".$row['ID'];
    if(!(mysql_query($query)))
        echo("Query failed2");

}

//add primary key back to ID
$query="ALTER TABLE events ADD PRIMARY KEY (ID)";
if(!(mysql_query($query)))
        echo("Query failed3");

【问题讨论】:

  • 打印$query,以及错误信息
  • 您为什么要这样做?如果您曾经将其他表链接到该表,您将失去它们之间的所有关系。
  • UPDATE events SET ID=".$i."WHERE ID=".$row['ID']; 可能在WHERE 之间放一个空格?
  • 你仍在使用 PHP 的 deprecated mysql 扩展。强烈建议迁移到 MySQLi 或 PDO。我推荐 PDO,因为它具有更好的 Prepared Statements 集成。
  • @charlotteDunois 我可能会试一试。我正在使用已弃用的 mysql,因为我想练习到目前为止我在 Uni 学到的东西。谢谢你的建议:)

标签: php mysql reset


【解决方案1】:

你至少应该在WHERE之前添加一个空格

$query=" UPDATE events SET ID=".$i." WHERE ID=".$row['ID'];

【讨论】:

  • 如果你用双引号包装你的语句,变量也不需要被包装。你可以简单地写:$query = "UPDATE events SET ID=$i WHERE ID=$row['ID']";
  • 至少应该在写u之前添加一个Y和一个o
猜你喜欢
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 2011-09-07
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多