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 ステートメントは機能せず、エラーも返されません。私は本当にこれに頭を悩ませています。どんな助けでも大歓迎です!!