Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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 - Fatal编程技术网

MYSQL和PHP对元素重新编号

MYSQL和PHP对元素重新编号,php,Php,我的代码是有效的,除了我试图从1开始对表“example2”中的所有项目重新编号。例如,我在表中输入了3个元素,其中包含(“url”,“number”)。数字用于跟踪元素,因此如果删除数字2,我需要调整剩余的两个元素,其中第一个元素仍然为1,第三个元素变为2。以下是我所拥有的: <?php $field1_name = $_POST['Number']; $size = 0; $con = mysql_connect("localhost", "*****", "*****") or

我的代码是有效的,除了我试图从1开始对表“example2”中的所有项目重新编号。例如,我在表中输入了3个元素,其中包含(“url”,“number”)。数字用于跟踪元素,因此如果删除数字2,我需要调整剩余的两个元素,其中第一个元素仍然为1,第三个元素变为2。以下是我所拥有的:

<?php
 $field1_name = $_POST['Number'];
 $size = 0;
 $con = mysql_connect("localhost", "*****", "*****") or die(mysql_error());
 mysql_select_db("test") or die(mysql_error());
 mysql_query("DELETE FROM example2 WHERE number='$field1_name'") 
 or die(mysql_error()); 
 $result = mysql_query("SELECT COUNT(*) FROM example2");
 $row = mysql_fetch_assoc($result);
 $size = $row['COUNT(*)'];
 $l = 1; while ($l <= $size) { $temp = "${"example2_$l"}"; 
 mysql_query("UPDATE example2                                              
 SET number = '$temp' WHERE number = $l"); mysql_query($query)or 
 die(mysql_error());$temp++; $l++;};

 mysql_close($con);
 ?>
  <script language="javascript" type="text/javascript">
    window.location = 'table.html';
  </script>

您的
虽然
循环有点混乱-您调用了
mysql\u query
两次,第二次使用未定义的变量
$query
(我假设是调试工作的结果)

一个更简单的解决方案可能是从大于已删除元素的所有元素中减去一个:

<?php

 $con = mysql_connect("localhost", "*****", "*****") or die(mysql_error());

 $field1_name = mysql_real_escape_string($_POST['Number']);

 mysql_select_db("test") or die(mysql_error());
 mysql_query("DELETE FROM example2 WHERE number='$field1_name'") 
    or die(mysql_error()); 

 mysql_query("UPDATE example2 SET number = number - 1 WHERE number > '$field1_name'") 
    or die(mysql_error());

 mysql_close($con);

?>

这种方法在很大程度上取决于数据行的数量。听起来你在寻找
更新示例2 SET number=number-1其中number>:cutoff
?请停止使用古老的mysql_*函数编写新代码。它们不再得到维护,社区已开始恢复。相反,您应该学习准备好的语句,并使用或。如果你想学习,。作为一名程序员,我真的不想去mysqli。为简单函数添加额外代码是没有意义的。我完全支持全局变量,但完全反对更改为全局变量ooe@Adsy2010:mysqli仍然有一个过程接口和一个面向对象接口。与旧的mysql_u函数相比还有其他好处,比如预处理语句。问题是:删除一个元素后,如何重新对所有元素编号?