【问题标题】:Syntax error on CREATE TABLE SQL queryCREATE TABLE SQL 查询的语法错误
【发布时间】:2015-05-06 09:35:06
【问题描述】:

sql 有什么问题?我不知道出了什么问题。它总是给我语法错误。

$dbh->exec ("CREATE TABLE 'test'
             (col1 CHAR (64) PRIMARY KEY,
             col2 CHAR (64),
             col3 CHAR (64),
             col4 CHAR (64))") or die (print_r ($dbh->errorInfo (), true));

我正在使用 EasyPHP,刚刚安装了它。我正在尝试使用上面的代码创建一个表。这是它返回的错误。我多次尝试更正语法。老实说,我认为语法是正确的。与我的 EasyPHP 安装配置有关,例如 mysql 配置不正确。

Array ( [0] => 42000 [1] => 1064 [2] => 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 '' 附近使用的正确语法在第 1 行)

编辑: 这是我用来连接的代码:

function dbConnect ($dbname) {
    $user = "root";
    $pass = "";
    $db = new PDO ("mysql:host=127.0.0.1;dbname=$dbname", $user, $pass);
    if ($db) {
        //echo "Connected to database." . "</br>";
    }

    return $db;
}

【问题讨论】:

  • 你能告诉我们堆栈跟踪是什么样的吗?
  • 你能把你用来连接数据库的代码贴出来吗?
  • 你有一些提前,看看答案,别忘了检查一个是正确的;-)
  • @AdrianCidAlmaguer 我还没有开始工作。
  • 有人发现问题了吗?

标签: php mysql sql database create-table


【解决方案1】:

表格名称不要放在引号内,更改

CREATE TABLE 'test'
             ^    ^

CREATE TABLE `test`  // don't even need back ticks usually

【讨论】:

  • 我以前就是这样的。
  • 如果你之前有过,那么就不会有任何语法错误,随着这个改变,你的查询就可以正常工作了。
  • 我尝试过使用引号、反引号,但不起作用。
【解决方案2】:

将您的 SQL 更改为:

CREATE TABLE test
             (col1 CHAR (64) PRIMARY KEY,
             col2 CHAR (64),
             col3 CHAR (64),
             col4 CHAR (64))

尝试:

$dbh->exec ("CREATE TABLE test
             (col1 CHAR (64) PRIMARY KEY,
             col2 CHAR (64),
             col3 CHAR (64),
             col4 CHAR (64))") or die (print_r ($dbh->errorInfo (), true));

【讨论】:

  • 它摆脱了错误信息。但是当我在phpadmin中检查数据库时,该表不存在。
  • @agentNil 尝试在 phpmyadmin 中执行查询,看看会发生什么
  • @agentNil 你有预付款吗?
  • 你的意思是有一些预付款?
  • 不,还是不知道为什么?这通常有效吗?我没有做我不应该做的事情吗?如果是这种情况,它应该将可能的问题缩小到配置而不是代码本身。
猜你喜欢
  • 1970-01-01
  • 2021-07-29
  • 2018-06-06
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
相关资源
最近更新 更多