0

私は他のトピックを見てきましたが、ここで何が問題なのかわかりません。たとえば、TRUNCATE クエリを単純な SELECT * に置き換えると、結果が得られます。しかし、これは false を返します。結果を得るために、このトピックから次のコードをコピーしました: PHP & MySQL: Truncate multiple tables

そして、私はAMFPHPを介してこれを行っています。

# the host used to access DB
define('DB_HOST', 'localhost');

# the username used to access DB
define('DB_USER', 'usr');

# the password for the username
define('DB_PASS', '***');

# the name of your databse
define('DB_NAME', 'name');

//$connection = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);


$connection = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);

if (mysqli_connect_errno())
{
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "TRUNCATE TABLE `books`";

$result = $connection->query($query);
if($result)
{
    return $result;
}
else
{
    return false;
}
4

2 に答える 2

2

MySQL ユーザーは、テーブルを切り捨てるために必要な特権を持っていますか? MySQL ドキュメントから:

[TRUNCATE] には、MySQL 5.1.16 の時点で DROP 権限が必要です。(5.1.16 より前では、DELETE 権限が必要です)。

編集:特権を持っていないと、何らかのエラーが発生します-ログに記録していますか、クエリエラーを確認できますか?

于 2011-06-26T12:26:36.677 に答える
0

ドキュメントによると、「切り捨て操作では、削除された行数に対して意味のある値が返されません。通常の結果は「影響を受ける行は 0」であり、「情報なし」と解釈する必要があります。http://dev.mysql.com/doc/refman/5.0/en/truncate-table.htmlを参照してください。

そのため、切り捨てが成功したとしても、if ステートメントは else パスをたどるように見えます。

于 2011-06-26T12:30:44.880 に答える