Php SQL Server的ODBC驱动程序17附近的语法不正确。“”

Php SQL Server的ODBC驱动程序17附近的语法不正确。“”,php,sql,sql-server,odbc,Php,Sql,Sql Server,Odbc,我正在尝试使用php在MS SQL server management 17中创建表 我的问题是: $mid=$row['MASTER_ID']; echo $mid; $table_solution="CREATE TABLE Q_MASTERID_'$mid'_Solution(

我正在尝试使用php在MS SQL server management 17中创建表

我的问题是:

                            $mid=$row['MASTER_ID'];
                            echo $mid;
                            $table_solution="CREATE TABLE Q_MASTERID_'$mid'_Solution(
                                            MASTER_ID INT ,  
                                            PRODUCT_NAME varchar(255),
                                            CUSTOMER_NAME varchar(255),
                                            Q_TEMP_ID INT IDENTITY(1,1),
                                            Q_DESC nvarchar(600) NULL,
                                            Q_CATEGORY nvarchar(255)  NULL,
                                            Q_SUB_CATEGORY nvarchar(255) NULL,
                                            SCOPE nvarchar(255) NULL 
                                            ) ON PRIMARY"; 

                            $solution_alter="ALTER TABLE Q_MASTERID_'$mid'_Solution ADD Q_ID AS CONCAT ('A',CAST(Q_TEMP_ID AS VARCHAR(100)))PERSISTED" ;

                             $res=sqlsrv_query($con,$table_solution) or die("Couldn't execute create query".print_r(sqlsrv_errors(), true));
                            $res1=sqlsrv_query($con,$solution_alter) or die("Couldn't execute alter query");
我遇到以下错误:

无法执行create queryArray[0]=>Array[0]=>42000[SQLSTATE]=>42000[1]=>102[code]=>102[2]=>SQL Server的[Microsoft][ODBC驱动程序17][SQL Server]错误语法。[消息]=>[Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]附近的语法不正确

如果我在createquery中删除$mid,我会得到以下错误

无法执行create queryArray[0]=>Array[0]=>42000[SQLSTATE]=>42000[1]=>156[code]=>156[2]=>[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]关键字“PRIMARY”附近的语法不正确。[消息]=>[Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]关键字“PRIMARY”附近的语法不正确

我想在创建表时添加名为$mid的动态变量,创建表Q_MASTERID_u'$mid''解决方案
帮我解决这个问题…

我想你是在尝试:

CREATE TABLE Q_MASTERID_Solution (
    MASTER_ID INT ,  
    PRODUCT_NAME varchar(255),
    CUSTOMER_NAME varchar(255),
    Q_TEMP_ID INT IDENTITY(1,1),
    Q_DESC nvarchar(600) NULL,
    Q_CATEGORY nvarchar(255)  NULL,
    Q_SUB_CATEGORY nvarchar(255) NULL,
    COPE nvarchar(255) NULL ,
    Q_ID AS ( CONCAT('A', CAST(Q_TEMP_ID AS VARCHAR(100))) ) PERSISTED
) ON "default"
我看不出有什么理由包括ON default,因为如果没有指定,那就是默认的分区方案。如果确实指定了一个,则需要指定一个现有的

您可以在名称中包含q_id的定义


使用相同的模式创建多个表是一种非常糟糕的做法。相反,将MASTER_ID作为列包含在表中,并对每个MASTER ID进行筛选。

$mid=$row['MASTER_ID']$table_solution=创建table Q_MASTERID_uuu'$mid''解决方案这就是我的问题所在,我想创建一个动态表,它的值来自$mid变量。@anupriya。不要这样做。向现有表中添加行,并在完成后将其删除。