【问题标题】:php mysql error for creating a table用于创建表的php mysql错误
【发布时间】:2012-01-27 20:30:17
【问题描述】:

我在 php 中使用 mysql 数据库创建表时出错,我尝试直接在 mysql 查询引擎上进行测试,它工作正常。而在php代码中它给出了以下错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法。

下面是我写的代码

$query14 = mysql_query("create table $tablename (
                                           project_id INT,
                                           project_client_id INT, 
                                           project_partner_id INT, 
                                           project_manager_id INT,
                                           project_employees INT, 
                                           project_name VARCHAR(500), 
                                           project_status TEXT,
                                           project_summary LONGTEXT, 
                                           project_order INT, 
                                           project_start_date DATETIME,
                                           project_end_date DATETIME
                                         ) ENGINE = INNODB;");

下面是附加的图像和表结构,这是我使用 phpmyadmin 界面创建的示例表。 以下是完整的错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''8' (project_id INT, project_client_id INT, project_partner_id INT, project_mana' at line 1`

【问题讨论】:

  • 执行此操作时的 $tablename 是什么?
  • 我认为 $tablename 与 '$tablename' 一起使用??
  • @MarcB 和 @jogesh_p :$tablename 值是动态的,它会随着一些 id 的变化而变化,并且工作正常。即使我将其更改为 '$tablename',但没有成功。我的$tablename 有一个值,我有 echoed it
  • @Rafee:你能给我们举个例子,看看$tablename 的样子吗?你确定这是失败的查询吗?顺便提一句。引用的版本更像`$tablename`(希望看起来正确,因为它也是 SO-inline-code-character)
  • @raffe: create table '$tablename' ... 将是一个语法错误。不能像那样引用字段/表名称 - 它会将它们变成字符串,而不是字段/表名称。您收到的完整错误消息是什么,尤其是...to use near: 之后的部分:这是重要/关键部分。

标签: php mysql create-table


【解决方案1】:

您的查询语法很好,看起来 $tablename 为空。

【讨论】:

    【解决方案2】:

    我没有发现您的查询有任何问题。但是$tablename 的值是多少?这里有两个错误可能性:

    1. 变量$tablename 为空。
    2. $tablename 是关键字。

    请检查以上两项,否则就可以了。

    更新:

    根据您更新的问题,请尝试使用以下代码。我想它会对你有所帮助。

    $query14 = mysql_query("create table `$tablename` (
                                               `project_id` INT,
                                               `project_client_id` INT, 
                                               `project_partner_id` INT, 
                                               `project_manager_id` INT,
                                               `project_employees` INT, 
                                               `project_name` VARCHAR(500), 
                                               `project_status` TEXT,
                                               `project_summary` LONGTEXT, 
                                               `project_order` INT, 
                                               `project_start_date` DATETIME,
                                               `project_end_date` DATETIME
                                             ) ENGINE = INNODB;");
    

    【讨论】:

    • $tablename 不为空,如果$tablename 是关键字,那么我已将其更改为$tablename1,但它仍然无法运行。
    • 请提及您的表名。你的表名是什么?
    • 看到$tablename是从其他数据库动态生成的,目前我正在对此进行实验,发现$tablename = 8,我会用更多错误更新问题
    【解决方案3】:

    我认为问题在于 $tablename 被替换的内容。

    拥有完整的代码示例将更有助于调试错误。

    mysql create 语句在 mysql 5.1.58 上运行良好。

    【讨论】:

      【解决方案4】:

      正如您在上面的 cmets 中所说,在回显 $tablename 后,您得到了值 8,则无法创建表。

      您必须将$tablename 的值重命名为tbl_8

      记住名字tbl-8你也有错误,,

      【讨论】:

      • 是的!我改成了$tablename = "project_"。 $someid,right syntax to use near ''project_8' (project_id INT, project_client_id INT, project_partner_id INT, proj' at line 1 出现错误
      【解决方案5】:

      问题是,$tablename 目前是 8,对于 SQL 表,表名必须以字母开头。当前表名无效。

      【讨论】:

        猜你喜欢
        • 2013-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 2015-04-18
        相关资源
        最近更新 更多