2013-12-21 23 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