0

一部のテーブルが空かどうかを知りたいのですが、このコードでこの問題に気付きました:

// if table is empty it must return TRUE, if full FALSE

private function isEmpty($tableName)
{

    if ($result = $this->mysqli->prepare("SELECT COUNT(*) FROM ?"))
    {

            $result->bind_param("s",$tableName);
            $result->execute();
            $row_cnt = $result->num_rows;

            if (empty($row_cnt))
            {

                    return TRUE;

            }
            else
            {

                    return FALSE;

            }

    }

}

このコードは本当に完璧ではないようです。同じ結果を得るためのより良い方法があることを知りたいのですが、述語SQL EXISTSなどを使用していますか? ありがとうございました。

更新: コメントと回答に感謝しますが、とにかくどうすればいいのかわかりません。エラーが発生します:

$mysqli = new mysqli("localhost","root","","database");

if ($result = $mysqli->prepare("SELECT COUNT(*) FROM `talbe` LIMIT 1"))
{

    $row = $result->fetch_row();

    echo "<pre>";
    print_r($row);
    echo "</pre>";

    $result->close();

}
$mysqli->close();

[Sat Jun 09 11:25:34 2012] [error] [client 127.0.0.1] PHP 致命的なエラー: F:\server\sites\home\test.loc\www\ の未定義メソッド mysqli_stmt::fetch_row() の呼び出し9 行目の empty.php

更新しました:

$mysqli = new mysqli("localhost","root","","db");

if ($result = $mysqli->query("SELECT * FROM `table` LIMIT 1"))
{

    if ($obj = $result->fetch_object())
    {

        echo "NOT EMPTY";

    }
    else
    {

        echo "empty";

    }


    $result->close();

}
$mysqli->close();

これです。

4

1 に答える 1

1

COUNT(*)テーブルに膨大な数の行がない場合、テーブルが空かどうかを判断するには問題ありません。

別の代替手段はSELECT (something) FROM ${table} LIMIT 1;、それが結果を返す場合、テーブルは空ではありません。

しかし、mysqli でそのようなパラメーターを介してテーブル名を設定することは可能ですか? あるとは思いませんでした、確認する必要があります。

于 2012-06-09T08:21:44.587 に答える