PHP & MySQL TRUNCATE TABLE возвращает значение false с AMFPHP - PullRequest
0 голосов
/ 26 июня 2011

Я смотрел на другие темы, и я не могу понять, что здесь не так.Например, если я заменю запрос TRUNCATE простым SELECT *, я получу результаты.Но это возвращает ложь.Я скопировал следующий код из этой темы, надеясь получить результат: PHP & MySQL: усечение нескольких таблиц

И я делаю это через 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;
}

Ответы [ 2 ]

1 голос
/ 26 июня 2011

Имеет ли пользователь MySQL необходимые привилегии для усечения таблицы? Из документов MySQL:

[TRUNCATE] требует привилегии DROP начиная с MySQL 5.1.16. (До 5.1.16 требуется привилегия DELETE).

Редактировать: отсутствие привилегии вызовет какую-то ошибку - вы входите в систему или видите ошибки запроса?

0 голосов
/ 26 июня 2011

Согласно документации «Операции усечения не возвращают значащее значение для количества удаленных строк. Обычный результат -« затронуто 0 строк », что следует интерпретировать как« нет информации ». См. http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html

Итак, ваш оператор if будет идти по пути else, даже если усечение успешно.

...