MySQL从表中删除项目不起作用

时间:2011-05-13 12:15:49

标签: php mysql sql-delete

我正在尝试根据唯一ID($ id)删除数据库中的记录。这段代码有问题吗?可能是一个简单的为你的PHP专业人士。

    function delAccount(){  

         mysql_query("DELETE FROM accounts WHERE id=".$id."LIMIT 1");

        }

我得到了:

    Fatal error: Can't use function return value in write context in     
    /home/content/53/7311353/html/cca/accounts/include/processAct.php on line 15

我的班级,我掌握了一切:

    class Accounts
        {

    function Accounts(){
        if (isset($_POST['addacct'])){
            $this->addAccount();
        }elseif(isset($_POST['editacct'])){
            $this->editAccount();
        }elseif(isset($_POST['delacct'])){
            $this->delAccount();
        }else{
            // redirect if loaded without a POST value set
            header("Location: ../index.php?o=illegal&t=nodata");
        }
    }

5 个答案:

答案 0 :(得分:2)

首先,您应该在“。$ id”之间加一个空格。和LIMIT所以:

mysql_query("DELETE FROM accounts WHERE id=".$id." LIMIT 1");

其次,默认情况下,$ id在此函数中不可用。要么这样做:

function delAccount($id) {  
  mysql_query("DELETE FROM accounts WHERE id=".$id." LIMIT 1");
}

并使用delAccount($ id_parameter);在您的脚本中发送ID以及该功能。或试试这个:

function delAccount() {  
  global $id;
  mysql_query("DELETE FROM accounts WHERE id=".$id." LIMIT 1");
}

然后,您可以在代码中的其他位置设置$id的值后调用此函数。

答案 1 :(得分:1)

你确定设置了$ id吗?

如果$ id应作为参数发送给函数,请尝试:

function delAccount($id) {
    mysql_query("DELETE FROM accounts WHERE id=" . $id . " LIMIT 1");
}

编辑:您错过了ID和LIMIT之间的空格字符。

对查询字符串的形式添加了一些小改进:

function delAccount($id) {
    mysql_query("DELETE FROM `accounts` WHERE `id` = " . $id . " LIMIT 1");
}

编辑:

你得到的错误并非来自MySQL本身。你检查了返回的值吗?它可能会返回另一个错误,或者返回的值可能是正确的,但在以后的代码中以错误的方式使用。

答案 2 :(得分:1)

有关如何调试此类内容的一些提示。

  • 如果您怀疑出现问题,首先要输出生成的查询。像这样:

    $query = "DELETE FROM accounts WHERE id=".$id."LIMIT 1";
    echo $query; // for debugging
    

    这将告诉您查询至少有一个问题:LIMIT之前缺少空格。

  • 如果遇到错误,
  • mysql_query()会返回false。您可以检查,然后使用mysql_error()输出。像这样:

    $result = mysql_query($query);
    if(!$result) trigger_error("Database error!: ".mysql_error());
    
  • 如果$id来自外部,例如$ _GET数组,请确保在查询中使用它之前测试它是否为整数以避免SQL injection

答案 3 :(得分:1)

首先:$ id的值实际上是数据库中的id吗?其次,在“LIMIT”之前需要一个空格,即:

" LIMIT 1".

答案 4 :(得分:1)

您的错误来自PHP编译器。你是否在第15行做了类似的事情:

if (delAccount(...) = false) { ... }

?如果是,请更改为==