0

DROP TEMPORARY TABLE ステートメントを実行しようとしています。MySQL Workbench を使用してステートメントを実行しましたが、そこで動作します。PHP と MySQL Workbench の両方で同じユーザーとして正常にログインしていることを確認しました。

mysqli::query() と mysqli::prepare の両方を使用してから、mysqli::execute() メソッドを使用してみました。DROP TEMPORARY TABLE ステートメントを実行しようとしても、どちらも機能しません。ただし、INSERT または SELECT ステートメントを実行すると、どちらも機能します。

このコードはエラーを返しませんが、データベースでも実行されません。

public function executeSQL()
{       
    // SQL statement using query method
    if (!$this->mySQLi->query("DROP TEMPORARY TABLE IF EXISTS TIME_INTERVAL_DATA") ) 
    {
        $this->writeSQLErrorToLog("Query method returned an error.");
    }
    if(!$this->mySQLi->commit()) 
    {
        // Committing the transaction failed.
        $this->writeSQLErrorToLog("Commit method returned an error.");
    }

    // SQL statement using prepare and execute methods
    $stmt = $this->mySQLi->prepare("DROP TEMPORARY TABLE IF EXISTS TIME_INTERVAL_DATA");
    if($stmt) 
    {
        if(!$stmt->execute())
        {
            // Execute method returned an error.
            $this->writeSQLErrorToLog("Execute method returned an error.");
            $this->throwMySQLErrorAndCloseStatement($stmt);
        }
    } else {
        // Prepare method returned an error.
        $this->writeSQLErrorToLog("Prepare method returned an error.");
        return;
    }
    // ...
}

ただし、次のコードはデータベースで実行されます。

$stmt = $this->mySQLi->prepare("INSERT INTO TABLE1 (ID) VALUES (1)");
if(!$stmt->execute()) {
    // Return the MySQL Error message and number
    $this->throwMySQLErrorAndCloseStatement($stmt);
}

私は見つけられる限り多くの MySQL と PHP のドキュメントを読んできました。上記のすべてのmysqliメソッドに関するドキュメントを読み、再読しました。そして、mysqli::escape_string() を使用するバリエーションについて読んで試してみましたが、使用するとエラーが返されます。また、さまざまな SQL ステートメントのさまざまなバリエーションを試しました。

簡単に言えば、INSERT ステートメントと SELECT ステートメントはすべて機能します。ただし、DROP TEMPORARY TABLE ステートメントは機能せず、エラーも返されません。私は本当にこれに頭を悩ませています。どんな助けでも大歓迎です!!

4

0 に答える 0