2

私のアプリケーションではSQLite3を使用しており、現在DELETEを機能させようとしています。以下のコードは私には問題ないようです。$producerIdがIDを保持していることを確認しました。もちろん、これはデータベースに存在します。

ただし、クエリを実行した結果、falseが返され、投稿は削除されません。

私は何が間違っているのですか?

public function deleteProducer($producerId) {

    $sql = "DELETE FROM 'producers' WHERE 'producerid' = $producerId";

    $result = $this->m_db->exec($sql);

    return $result;  // <- 0 (fails)
}

データベース構造:

Table: producers
Fields: id(INTEGER PRIMARY KEY), producerid(INT), name(TEXT), address(TEXT), zipcode(INT), town(TEXT), url(TEXT), imgurl(TEXT)
4

1 に答える 1

1

SQLでは、文字列に一重引用符が使用されます。

SQLiteは、コンテキスト(テーブル名など)から意味が明確な場合、識別子の代わりに文字列を受け入れますが、WHERE条件では文字列許可'producerid'されるため、文字列として解釈されます。

識別子には、二重引用符を使用します。

$sql = 'DELETE FROM "producers" WHERE "producerid" = $producerId';
于 2012-12-04T14:34:41.920 に答える