检索然后使用while循环更新mysql中的同一行

时间:2013-12-26 13:35:43

标签: php mysql

我正在从本地数据库中读取数据,然后对信息进行一些计算,然后重新编写。一切正常,但我不知道如何将我所做的与正确的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,因为我不确定如何将两者结合在一起,我已阅读了无数的教程,而我似乎无法弄明白。

这是我的代码,

mysql_query("INSERT INTO array (lat, lon) VALUES ('$NewLat', '$NewLong')");

如果我删除上面的id,它可以通过添加到数据库的底部来实现。 我希望任何人都可以提供帮助。

2 个答案:

答案 0 :(得分:0)

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

还要考虑比数组更好的名称:)

答案 1 :(得分:0)

最好不要使用折旧函数 Mysqli * 。使用 PDO MYSQLi

如果您想更新行...在选择之后您需要使用更新查询。 在您的代码中,您正在复制列 id 以插入

在存储到db

之前必须哈希 * 密码 *
<?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'");

 }

?>