我试图执行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语句永远不会工作,永远不会返回错误。我真的在这个问题上摸不着头脑。任何帮助将不胜感激!!