Php 创建表时出错

Php 创建表时出错,php,mysql,create-table,Php,Mysql,Create Table,在我的php程序中,我想检查表是否存在。如果表不存在,则要创建表 我试过的代码 <?php if( isset($_POST['uniqueno'])) { $uniqueno=$_POST['uniqueno']; $user=$_SESSION['userid']; $date=date('Y-m-d H:i:s'); if(mysql_num_rows(mysql_query("SHOW

在我的php程序中,我想检查表是否存在。如果表不存在,则要创建表

我试过的代码

<?php
if( isset($_POST['uniqueno']))
{
            $uniqueno=$_POST['uniqueno'];
            $user=$_SESSION['userid'];
            $date=date('Y-m-d H:i:s');
            if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$user."'"))==1)
            { echo "table exists"; }
            else
            {
                $create=mysql_query("create table '$user'(  uniqueno varchar(10) NOT NULL,
                                                            elementno varchar(30),
                                                            name varchar(50),
                                                            process varchar(30),
                                                            date datetime(30), 
                                                            PRIMARY KEY (uniqueno) 
                                                          )");
                if(!$create)
                {
                    echo mysql_error();
                }                       
            }
}
?>

去掉表名的单引号,查询应该是

"create table $user(  uniqueno varchar(10) NOT NULL,
                      elementno varchar(30),
                      name varchar(50),
                      process varchar(30),
                      date datetime, 
                      PRIMARY KEY (uniqueno) 
                    )"
试试这个

$create=mysql_query("create table $user (  uniqueno varchar(10) NOT NULL,
                                           elementno varchar(30),
                                           name varchar(50),
                                           process varchar(30),
                                           date datetime(30), 
                                           PRIMARY KEY (uniqueno) 
                                        )");
应该是

$create=mysql_query("create table $user (  uniqueno varchar(10) NOT NULL,
                                                        elementno varchar(30),
                                                        name varchar(50),
                                                        process varchar(30),
                                                        date datetime, 
                                                        PRIMARY KEY (uniqueno) 
                                                      )");
  • 不需要$user左右的单引号
  • datetime字段不需要字段长度

使用此查询时,另一个错误消息显示:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第5行的near'(30),PRIMARY KEY(uniqueno))'的正确语法抱歉,我没有注意到还有一个问题,datetime不需要长度,因此我更新了答案,现在应该可以用了。
<?php
session_start();
//your db connection code here
if( isset($_POST['uniqueno']))
{
            $uniqueno=$_POST['uniqueno'];
            $userid=$_POST['userid'];
            $user=$_SESSION[$userid];
            $date=date('Y-m-d H:i:s');
            if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$user."'"))==1)
            { echo "table exists"; }
            else
            {
                $create=mysql_query("create table ".$user."(`uniqueno` varchar(10) NOT NULL,`elementno` varchar(30),`name` varchar(50),`process` varchar(30),`date` datetime, PRIMARY KEY(`uniqueno`))");
                if(!$create)
                {
                    echo mysql_error();
                }                       
            }
}
?>