0

以下のステートメントが基本的に機能しない理由がわかりません。一言で言えば、テーブルに だけが見つからない$result場合にステートメントを実行したいのです。それが見つかった場合は、ステートメントを実行してもらいたいと思います。$product_id$imagesinner

両方のステートメントはphpMyAdminを介して$result機能し、ステートメントは使用するだけで機能します$this->db->query

コード:

public function product_delete($product_id)
{
    $table = $this->_table_products;
    $images = $this->_table_product_images;

    $result = $this->db->query("SELECT `id` FROM $table WHERE $table.id ='$product_id'");

    if(mysqli_num_rows($result) !== 0)
    {
        $this->db->query("DELETE FROM $table WHERE $table.id = '$product_id'");
    }else{
        $this->db->query("DELETE FROM $table INNER JOIN $images ON $table.id = $images.product_id WHERE $images.id = $product_id");
    }
}
4

3 に答える 3

1

{}クエリで変数名を前後に使用する必要があります。!=の代わりにも使用!==

$result = $this->db->query("SELECT `id` FROM {$table} WHERE {$table}.id ='$product_id'");

if(mysqli_num_rows($result) != 0)
{
    $this->db->query("DELETE FROM {$table} WHERE {$table}.id = '$product_id'");
}else{
    $this->db->query("DELETE FROM {$table} INNER JOIN {$images} ON {$table}.id = {$table}.product_id WHERE {$images}.id = $product_id");
}
于 2013-06-12T05:00:22.247 に答える
0

画像テーブルを確認したい場合は${images}、 ではなく、テーブルをクエリする必要があります${table}。また、一致する行がいくつあるかを調べることのみに関心がある場合は、COUNT()MySQL で関数を使用することをお勧めします。そうすれば、潜在的に 100,000 行ではなく、常に 1 行を取得できます。この関数を使用するmysqli_num_rows()と、CodeIgniter データベース クラスが導入する柔軟性が失われるという欠点があります。

したがって、コードは次のようになります

$result = $this->db->query("SELECT COUNT(*) `cnt` FROM ${images} WHERE ${images}.product_id ='$product_id'");

$row = $result->row();

if($row['cnt'] != 0) {
    // found something

文字列内の変数名が不明確な場合は、角かっこを使用して、必要なものを PHP に伝えることができます。"${foo}bar"変数は$foobar変数の内容に追加する単なる文字列であることを意味します。読みやすさの向上にも役立ちます。そして、私はCIに十分に精通しておらず、値が整数になるか、整数の文字列表現になるかがわからないため、に変更!==しました。!=

于 2013-06-12T05:46:52.457 に答える
0

!==に変更!=

if(mysqli_num_rows($result) != 0)
{
    $this->db->query("DELETE FROM $table WHERE $table.id = '$product_id'");
}
else
{
    $this->db->query("DELETE FROM $table INNER JOIN $images ON $table.id = $images.product_id WHERE $images.id = $product_id");
}
于 2013-06-12T04:57:37.660 に答える