Php 使用while循环检索并更新mysql中的同一行

Php 使用while循环检索并更新mysql中的同一行,php,mysql,Php,Mysql,我从本地数据库中读取数据,然后用这些信息进行一些计算,然后将其重写回来。这一切都很好,但我不知道如何将我所做的与正确的id关联起来 它在表的底部插入我的新值,与同一ID不对应。如有任何帮助,将不胜感激 id是自动递增的 这是桌子 x y lat lon id 123 123 NewVal NewVal 1 所以lat和lon的列是空的。当我运行PHP时,它会将正确的lat和lon写回数据库,但是在数据库的末尾,而不是相应的X,Y 代

我从本地数据库中读取数据,然后用这些信息进行一些计算,然后将其重写回来。这一切都很好,但我不知道如何将我所做的与正确的id关联起来

它在表的底部插入我的新值,与同一ID不对应。如有任何帮助,将不胜感激

id是自动递增的

这是桌子

x        y      lat     lon     id 
123     123     NewVal  NewVal  1
所以lat和lon的列是空的。当我运行PHP时,它会将正确的lat和lon写回数据库,但是在数据库的末尾,而不是相应的X,Y

代码如下:

<?php 
  mysql_connect("localhost", "root", "test") or die(mysql_error()); 
  mysql_select_db("class") or die(mysql_error()); 
  $data = mysql_query("SELECT * FROM array") 
    or die(mysql_error()); 
  require ('gPoint.php');
  $myHome =& new gPoint();  // Create an empty point
  while($info = mysql_fetch_array( $data )) 
  { 
    $x = $info['x'];
    $y = $info['y'];
    $id = $info['id'];

    $myHome->setUTM( $x, $y, "39N");
    $myHome->convertTMtoLL();
    $NewLat = $myHome->Lat();  
    $NewLong = $myHome->Long();
    mysql_query("INSERT INTO array (id, lat, lon) VALUES ('$id', '$NewLat', '$NewLong')");
  }
?> 
如果我像上面那样删除id,它将通过在数据库底部添加来工作。 我希望任何人都能帮忙

UPDATE array 
SET lat = $NewLat, long = $NewLong
WHERE id = $id

也考虑比数组更好的名称:

< P>最好不要使用折旧函数<强> MySqL*使用<强> PDO < /强>或<强> MySqLI>强> < /P> 如果要更新行..选择后,需要使用更新查询。。 在代码中,您正在复制列id,以便插入

必须散列*密码*,然后才能存储在数据库中

<?php 

 mysql_connect("localhost", "root", "test") or die(mysql_error()); 
 mysql_select_db("class") or die(mysql_error()); 
 $data = mysql_query("SELECT * FROM array") 
 or die(mysql_error()); 
 require ('gPoint.php');
 $myHome =& new gPoint();   // Create an empty point
 while($info = mysql_fetch_array( $data )) 
 { 
$x = $info['x'];
$y = $info['y'];
$id = $info['id'];

$myHome->setUTM( $x, $y, "39N");
$myHome->convertTMtoLL();
$NewLat = $myHome->Lat();  
$NewLong = $myHome->Long();

mysql_query("UPDATE array SET lat='$NewLAt', lon='$NewLong' WHERE id='$id'");

 }

?> 

在计算新值后,更新新记录不要使用INSERT。不要使用不推荐的方法Hanks man,这很有效,我只需要添加变量“”,所以:“$NewLat”
<?php 

 mysql_connect("localhost", "root", "test") or die(mysql_error()); 
 mysql_select_db("class") or die(mysql_error()); 
 $data = mysql_query("SELECT * FROM array") 
 or die(mysql_error()); 
 require ('gPoint.php');
 $myHome =& new gPoint();   // Create an empty point
 while($info = mysql_fetch_array( $data )) 
 { 
$x = $info['x'];
$y = $info['y'];
$id = $info['id'];

$myHome->setUTM( $x, $y, "39N");
$myHome->convertTMtoLL();
$NewLat = $myHome->Lat();  
$NewLong = $myHome->Long();

mysql_query("UPDATE array SET lat='$NewLAt', lon='$NewLong' WHERE id='$id'");

 }

?>