php - CREATE TABLE 和 INSERT,相同的查询

标签 php mysql pdo

<分区>

我在创建表并在同一个查询中向其中插入数据时遇到问题。我的PHP脚本如下

<?php
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);

try {
    $db = new pdo('mysql:host=' . $request->hostname . ';dbname=' . $request->dbname, $request->username, $request->password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $q = "CREATE TABLE  admins (
                  id int(11) NOT NULL AUTO_INCREMENT,
                  username varchar(255) NOT NULL,
                  password varchar(32) NOT NULL,
                  name varchar(255) NOT NULL,
                  email varchar(255) NOT NULL,
                  PRIMARY KEY (id)
                ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

                INSERT INTO admin (id, username, password, name, email) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Your Name', 'you@yourdomain.com');";

    try {
        $db->exec($q);
        output("success");
    }
    catch(PDOException $e) {
        output("Failed to create tables->" . $e->getMessage());
    }
}
catch(PDOException $ex) {
    output('Unable to connect. Make sure your connection info is correct.');
}
?>

表已创建,但是插入不起作用。它提示 admins 表还不存在。好的,这是有道理的。我怎样才能使这项工作?

我尝试修改 exec 行来做一个单独的查询来插入,但是 if 失败了

$create = $db->exec($q);
if ($create)
{
    $q = "INSERT INTO admin (id, username, password, name, email) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Your Name', 'you@yourdomain.com');";
    $db->exec($q);
    output("success");
}

最佳答案

您创建名为 admins 的表,但尝试在表 admin 中插入

此外,您不需要插入 id 字段,因为它是 AUTO_INCREMENT 并且 mysql 会为您完成。

像这样修复你的插入:

INSERT INTO admins (username, password, name, email) VALUES ('admin', '21232f297a57a5a743894a0e4a801fc3', 'Your Name', 'you@yourdomain.com');

关于php - CREATE TABLE 和 INSERT,相同的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25127725/

相关文章:

php - 将组合字符串拆分为数组

javascript - 为什么 php 代码会覆盖 javascript?

php - 无法使用 PHP 和 MySQL 获取已接受的请求

java - 当查询使用 MySQL 控制台运行时,执行 UPDATE 查询时 JDBC 抛出 SQLSyntaxErrorException

php - 用一个变量查询多个字段的PDO最佳实践

PHP - 将 PDO 与 IN 子句数组一起使用

php - 如何在CodeIgniter中扩展多个类?

php - 自动完成 : Failed to load resource: Preflight response is not successful

mysql - 从数据库中获取特定订单的订单 ID 的查询是什么

php - 执行时绑定(bind)插入 "fail"