0

table_a(名前、ID)とtable_b(タスク)の2つのテーブルがあります。

table_a.name から table_b.Task に値を挿入するオプションがあります。

しかし、table_a.name から値を削除したいときに、その値が table_b.Task にある場合、table_b.Task の値は、table_a.name から削除された値の前の値で更新する必要があります。

コードは次のとおりです。

  $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'");

PS ID は自動インクリメント

このコードを使用して table_b を表示すると、更新する必要がある値が空白になります。それを機能させるのを手伝ってください

4

1 に答える 1

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];

これにより、必要な値が取得されます。

編集: update および delete ステートメントは、結果セットを出力として生成しません。

于 2012-09-05T09:55:59.617 に答える