2017-10-04 3 views
0

私は、SQLからの削除用とデータベースへの追加用の2つのスクリプトを使用しています。1つのスクリプトからヘッダーを使用すると、ヘッダーを使用して別のデータからデータを更新しますか?

私が抱えている問題は、追加スクリプトを実行すると、ページがすぐに変更を示すように更新されるということです。しかし、削除スクリプトを実行すると、即座にこれをリフレッシュせず、出力をキャッシュするように見えますか?

リダイレクト先の出力をキャッシュすると、1つのスクリプトで追加が表示され、もう1つでは削除が表示されないのはなぜですか?

スクリプト

// Set a URL for the user to be redirected to 
$header_URL = "Location: ".WEBURL.DOCROOT."pages/parents-evening/{$_SESSION['status']}/"; 


// SQL statement using the variables from the user to insert into a specific table 
$sql = "INSERT INTO $table ($columns) VALUES ($values);"; 

// Check that the query was successful 
if(mysqli_query($conn, $sql)) 
{ 
    // Success 
    // Closes the database connection 
    mysqli_close($conn); 
    // Sets the redirect location 
    header($header_URL); 
    // Exits the script 
    exit(); 
} 
else 
{ 
    // Fail 
    // Closes the database connection 
    mysqli_close($conn); 
    // Sets the redirect location 
    header($header_URL); 
    // Exits the script 
    exit(); 
} 

スクリプト

// Set a URL for the user to be redirected to 
$header_URL = "Location: ".WEBURL.DOCROOT."pages/parents-evening/{$_SESSION['status']}/"; 

// SQL statement to delete from the table provided where the ID is equal to either the POST or GET value 
$sql = "DELETE FROM {$table} WHERE id = {$_POST['delete_id']}{$_GET['delete_id']}"; 

// Check the query was successful 
if(mysqli_query($conn, $sql)) 
{ 
    // Success 
    // Closes the database connection 
    mysqli_close($conn); 
    // Sets the redirect location 
    header($header_URL); 
    // Exits the script 
    exit(); 
} 
else 
{ 
    // Fail 
    // Closes the database connection 
    mysqli_close($conn); 
    // Sets the redirect location 
    header($header_URL); 
    // Exits the script 
    exit(); 
} 
+0

についてはPOST

$sql = "DELETE FROM {$table} WHERE id = ".$_POST['delete_id']." LIMIT 1"; 

ことは_what_ないのですか?あなたはそれが最終的にリフレッシュすると言うことに行きます、それで何がやっていませんか? –

+0

@PatrickQ私は私の質問に言い返しました。しかし、1つのスクリプトが実行されたときに即座に更新され、他のスクリプトは即座に実行されません。 –

+0

'{$ _POST ['delete_id']} {$ _ GET ['delete_id']}'という特別な理由はありますか?私はそれらのうちの1つしか期待しません。そして、本当にあなたは本当にパラメタの束縛を調べるべきです。 –

答えて

0

を追加削除問題はこの文にあるようだ。

$ SQLが=「{$表} WHERE IDから、DELETE = {$ _POST ['delete_id']} {$ _GET ['delete_id']}」;

あなたはPOSTからdelete_idを取得している場合、クエリは次のようになります。

$sql = "DELETE FROM {$table} WHERE id = ".$_POST['delete_id']; 

あなたはGETからdelete_idを取得している場合、クエリは次のようになります。

$sql = "DELETE FROM {$table} WHERE id = ".$_GET['delete_id']; 

なるように1つのレコードのみが存在する場合削除されました(idがプライマリキーであるようですので、レコードは1つしかありません)、巨大なdaを持っている場合は、削除処理を高速化するので、limit 1を使用することをお勧めしますあなたのテーブルの中に。

制限1はデータベースに1つのレコードのみを削除するように指示するので、1レコードが削除されたときに実行を停止します。

最終的なクエリは次のようになります。 "私は削除したとき、それはしません"

GET

$sql = "DELETE FROM {$table} WHERE id = ".$_GET['delete_id']." LIMIT 1"; 
+0

私の問題は上記のように実行されたコードではありません。 SQL文は現在の状態で正常に実行されます。問題は、データを挿入するときにリダイレクトするページに変更が直ちに表示されることです。データを削除するときに指示するページには変更がすぐに反映されず、ページに表示されるよりもかなり長い時間がかかります。これは、DBMS自体の中ですぐに完了したものとして示されています。 –

関連する問題