2013-12-21 22 views
1

我有兩個查詢,一個填充我的表,另一個控制每行的刪除按鈕。當我在代碼中有刪除按鈕查詢時,它會禁用表並將其留空。關於爲什麼會發生這種情況的任何想法?PHP查詢代碼禁用其他查詢

下面的代碼:

// Queries 

$delquery = "DELETE FROM mods WHERE id = '$id'"; 
$delete = $conn->query($delquery) or die(mysqli_error($conn)); 

// Run queries and actions 

if (isset($_POST['delete'])) { 
    echo $delete; 
} 

// Table population 

$query = "SELECT * FROM mods"; 
$result = $conn->query($query) or die(mysqli_error($conn)); 
+0

您的預期成果是什麼?表中有多個'id'值? –

+0

第一個查詢不會禁用它,但是您設置的代碼總是會從'mods'中刪除該行,不管是否設置了$ _POST ['delete']'。只要將MySQL包裝好,你已經擁有了,而且你很好。 – JakeGould

回答

5

因爲您清空表不管條件如何。

的前兩行代碼放在聲明中。

+0

這就是問題,謝謝! – swiftsly

2

您的if (isset($_POST['delete'])) {條件應該包含整個刪除查詢邏輯 - 尤其是MySQL查詢 - 而不僅僅是echo語句。否則,無論何時加載該代碼,您都將刪除該表。試試這個:

if (isset($_POST['delete'])) { 
    // Queries 
    $delquery = "DELETE FROM mods WHERE id = '$id'"; 
    $delete = $conn->query($delquery) or die(mysqli_error($conn)); 

    // Run queries and actions 
    echo $delete; 
} 

// Table population 
$query = "SELECT * FROM mods"; 
$result = $conn->query($query) or die(mysqli_error($conn)); 

我會還建議重新加工是if邏輯,所以它不會引發在運行時指數沒有設置錯誤時$_POST['delete']沒有被除isset使用array_key_exists設置:

if (array_key_exists('delete', $_POST) && isset($_POST['delete'])) { 
    // Queries 
    $delquery = "DELETE FROM mods WHERE id = '$id'"; 
    $delete = $conn->query($delquery) or die(mysqli_error($conn)); 

    // Run queries and actions 
    echo $delete; 
} 

// Table population 
$query = "SELECT * FROM mods"; 
$result = $conn->query($query) or die(mysqli_error($conn)); 
+1

工程很好,謝謝你的建議,我會用它來代替。更有意義一點。 – swiftsly