我可能会得到";0行受到影响";关于这个问题


What are some reasons that I might be getting "0 rows affected" on this query?

Backstory:

我正在尝试创建一个WordPress主题,并正在处理该主题的设置部分。我安装了WordPress,运行它的MySQL数据库名为testdb。我有一个文件setup.php,看起来像

<?php
error_reporting(-1);
ini_set('display_errors', 'On');
$con = mysqli_connect('localhost', 'testadmin', 'something'); 
if ($con->connect_error)
{
   die("Connection failed: " . $conn->connect_error);
} 
echo "<p>Connected to localhost successfully</p>";
if ($con->select_db("testdb"))
{
    echo ("<p>Connected to database</p>");
}
else
{
    die($con->error);
}
if ($con->query("CREATE TABLE mems (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR (50), title VARCHAR (20), bio VARCHAR (500), sord INT, picfn VARCHAR (100))") === TRUE)
{
    echo("<p>Created table for team members.</p>");
}
else
{
    die($con->error);;
}
$con->close();
?>

它在表创建部分失败,因为输出是

成功连接到本地主机

已连接到数据库

CREATE命令被拒绝给表"mems"的用户"testadmin"@"localhost">

我认为这是一个特权问题,所以我进入MySQL命令行并运行

GRANT ALL on testdb.* to 'testadmin'@'localhost';

输出

查询正常,0行受影响(0.03秒(

我向SHOW DATABASES;核实了数据库testdb确实在那里,并且向SELECT user FROM mysql.user;核实了用户testadmin在那里。我知道密码是正确的。

那么问题出在哪里呢?

如果mems表已经存在,它将失败。

有一个IF NOT EXISTS子句将检查它是否已经存在。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    select_statement

[]是可选