从另一个表php mysql更新具有先前值的表

时间:2012-09-05 09:03:26

标签: php mysql

我有两个表:table_a(name,ID)和table_b(Task)。

我可以选择将table_a.name中的值插入table_b.Task。

但是当我想从table_a.name中删除一个值并且在table_b.Task中找到该值时,必须使用table_a.name中已删除值的先前值更新table_b.Task值。

以下是代码:

  $delete=$_POST['deletevalue'];
  if(isset($_POST['_submit'])){

$id=mysql_query("SELECT ID FROM table_a WHERE name='$delete'");


$x=mysql_query("SELECT MAX(ID) FROM table_a WHERE ID<$id");

$task=mysql_query("SELECT name FROM table_a WHERE ID=$x");

$query1=mysql_query("delete from table_a where name='$delete'");

$query2=mysql_query("UPDATE table_b SET Stare='$task' WHERE Task='$delete'");

P.S。 ID是自动增量

当我使用此代码并显示table_b时,应更新的值为空。 请帮我把它搞定

1 个答案:

答案 0 :(得分:0)

在php中,函数mysql_query返回一个结果集对象。

要获取实际值,您需要从结果集中获取值。这应该有所帮助:

$objId=mysql_query("SELECT ID FROM table_a WHERE name='$delete'");
$rowId=mysql_fetch_row($objId);
$id=$rowId[0];

同样,您可以获取其他实例的值。

另外,您可以将这些查询组合在一起:

$id=mysql_query("SELECT ID FROM table_a WHERE name='$delete'");
$x=mysql_query("SELECT MAX(ID) FROM table_a WHERE ID<$id");
$task=mysql_query("SELECT name FROM table_a WHERE ID=$x");

作为

$objTask=mysql_query("SELECT a.name FROM table_a a WHERE a.ID=(SELECT MAX(b.ID) from table_a b WHERE b.ID<(SELECT c.ID FROM table_a c WHERE c.name='$delete'))");
$rowTask=mysql_fetch_row($objTask);
$task=$rowTask[0];

这将获取您需要的值。

编辑: 更新和删除语句不会生成任何结果集作为输出。