通过PHP PDO创建MySQL表后无法插入

通过PHP PDO创建MySQL表后无法插入,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我是PDO和MySQL的新手,遇到了一个奇怪的问题。我已经查看了很多PDO和MySQL线程,但似乎没有人有这个确切的问题 在创建数据库、新mysql、新用户、一个表和几列之后,我无法使用INSERT INTO填充数据库。PDO抛出以下错误: SQLSTATE[42S02]:未找到基表或视图:1146表“cms01db.cms_设置”不存在 如果我在PHPMyAdmin中查看,数据库存在,表和列存在,排序规则正确等等。如果我在PHPMyAdmin中删除表并在其中手动重新创建它,使用完全相同的规范,

我是PDO和MySQL的新手,遇到了一个奇怪的问题。我已经查看了很多PDO和MySQL线程,但似乎没有人有这个确切的问题

在创建数据库、新mysql、新用户、一个表和几列之后,我无法使用INSERT INTO填充数据库。PDO抛出以下错误:

SQLSTATE[42S02]:未找到基表或视图:1146表“cms01db.cms_设置”不存在

如果我在PHPMyAdmin中查看,数据库存在,表和列存在,排序规则正确等等。如果我在PHPMyAdmin中删除表并在其中手动重新创建它,使用完全相同的规范,我可以使用非常相同的INSERT-in脚本,它工作得很好

我做错了什么

创建数据库的脚本:

// define server and root login
$servername = 'localhost';
$username = 'root';
// define new user for new database and login password
$newUser = 'admin';
$newPass = 'password';
$dbname = 'cms01db';

// create database
try {
// connect to mysql and login
$conn = new PDO("mysql:host=$servername", $username);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// setup command to create database, new user and asign to new database
$sql = "CREATE DATABASE `$dbname` CHARACTER SET ascii COLLATE ascii_general_ci;
        CREATE USER '$newUser'@'localhost' IDENTIFIED BY '$newPass';
        GRANT ALL ON `$dbname`.* TO '$newUser'@'localhost';
        FLUSH PRIVILEGES;";
// use exec() because no results are returned
$conn->exec($sql);
echo "Database created successfully<br>";
}
// if shit goes wrong...
catch(PDOException $e)
{
// display error why
echo $sql . "<br>" . $e->getMessage();
}
// terminate db connection
$conn = null;
创建表和列的脚本:

// login with new user and create database tables & columns
try {
    // connect to mysql and login
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $newUser, $newPass);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // sql to create table and columns
    $sql = "DROP TABLE IF EXISTS cms_setings;
            CREATE TABLE cms_setings (
            measurements VARCHAR(1) NOT NULL,
            brasizes VARCHAR(3) NOT NULL,
            shoesizes VARCHAR(3) NOT NULL
            )";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "CMS Settings Table created successfully<br>";
}
// if shit goes wrong...
catch(PDOException $e)
{
    // display error why
    echo $sql . "<br>" . $e->getMessage();
}
// terminate db connection
$conn = null;
要插入的脚本:

//prepare variables
//measurements: 'm' for metric, 'i' for inches
$measurements_data = 'i';
//brasizes: 'us' for USA/Canada, 'uk' for UK, 'aus' for Australia, 'eu' for Europe, 'bef' for Belgium/Spain/France
$brasizes_data = 'us';
//shoesizes: 'us' for USA/Canada, 'uk' for UK, 'eu' for Europe, 'jap' for Japan
$shoesizes_data = 'us';

// login and insert data into columns
try {
    // connect to mysql and login
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $newUser, $newPass);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // sql to create insert data
    $sql = "INSERT INTO cms_settings (measurements,brasizes,shoesizes) VALUES (:measurements,:brasizes,:shoesizes)";
    //prepare the statement
    $stmt = $conn->prepare($sql);
    // execute statement
    $stmt->execute(array(':measurements' => $measurements_data,
                    ':brasizes' => $brasizes_data,
                    ':shoesizes' => $shoesizes_data));
    echo "CMS Setting Populated Successfully<br>";
}
// if shit goes wrong...
catch(PDOException $e)
{
    // display error why
    echo $sql . "<br>Error: " . $e->getMessage();
}
// terminate db connection
$conn = null;

代码中有一个拼写错误。换线

        CREATE TABLE cms_setings (


干杯

看起来像是打字错误:cms_设置而不是cms_设置。@Leggendario-你赢了我:天哪,现在我觉得自己很傻哈哈。非常感谢你!现在可以完美地工作了^ ^难以置信的是,当你长时间盯着同一个代码看时,你会对这样的小错误视而不见……每个人都会发生。快乐编程!
        CREATE TABLE cms_settings (