【问题标题】:PHP & MySQL TRUNCATE TABLE returns false with AMFPHPPHP & MySQL TRUNCATE TABLE 使用 AMFPHP 返回 false
【发布时间】:2011-06-26 12:09:41
【问题描述】:

我查看了其他主题,但我无法弄清楚这里有什么问题。例如,如果我用简单的 SELECT * 替换 TRUNCATE 查询,我会得到结果。但这返回错误。我从这个主题复制了以下代码,希望得到结果: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;
}

【问题讨论】:

    标签: php mysql truncate amfphp


    【解决方案1】:

    MySQL 用户是否拥有截断表所需的权限?来自 MySQL 文档:

    [TRUNCATE] 从 MySQL 5.1.16 开始需要 DROP 权限。 (5.1.16之前需要DELETE权限)。

    编辑:没有私有权限会产生某种错误 - 您是否正在记录或能够看到任何查询错误?

    【讨论】:

    • 谢谢,就是这样。不知道,我一直认为 DELETE 就足够了。你为我节省了一些时间:-)
    【解决方案2】:

    根据文档,“截断操作不会为删除的行数返回有意义的值。通常的结果是“0 行受影响”,应解释为“无信息”。见http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html

    因此,即使截断成功,您的 if 语句也会沿 else 路径运行。

    【讨论】:

    • 当我按照上面所说的更改权限时,结果返回true。
    猜你喜欢
    • 2016-12-22
    • 2020-01-24
    • 2012-12-31
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2011-01-03
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多