无法使用PHP创建表

时间:2017-06-29 15:49:48

标签: php mysql sql

我想创建一个包含传递到我的php文件中的变量的表。但是,当我传入' 12345'时,SQL不起作用。当我通过' a12345'代替。

这是我的错误。

Error creating the table 
query was
CREATE TABLE 123456 ( humidity VARCHAR(50) NOT NULL, temperature VARCHAR(50) 
NOT NULL, gasquality VARCHAR(50) NOT NULL, timestamp DATETIME NOT NULL 
DEFAULT CURRENT_TIMESTAMP)
mysqlerror: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 
'123456 ( humidity VARCHAR(50) NOT NULL, temperature VARCHAR(50) NOT NULL, 
gasq' at line 1
Creating database failed!

和我创建表的函数

function CreateTableNode(&$formvars)
{

    $serialno = $formvars['serialno'];

    $qry =  "CREATE TABLE ".$serialno." (".
            " humidity VARCHAR(50) NOT NULL, ".
            " temperature VARCHAR(50) NOT NULL, ".
            " gasquality VARCHAR(50) NOT NULL, ".
            " timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP)";

    if(!mysqli_query($this->connection,$qry))
    {
        $this->HandleDBError("Error creating the table \nquery was\n $qry");
        return false;
    }
    return true;
}

我希望能够使用数字名称创建表格,例如' 12345'或者' 154124'用于其他目的。非常感谢!

5 个答案:

答案 0 :(得分:0)

预计该实体的名称。 (位置13的“123456”附近)

尝试为表名添加前缀

“t_12345”

CREATE TABLE t_12345

MySql不允许数值作为表名。

答案 1 :(得分:0)

你需要用引号包装查询中的一些元素,因为underscore_d提到的重复线程说:

#include<stdio.h>
#include<string.h>
int main(){
    char s[100],a,b;
    //i am not able to get this value,please help me how to get three variables s,a,b at runtime
    scanf("%c",s);
    scanf("%c",a);
    scanf("%c",b);
    int n=strlen(s),count=0;
    for(int i=0;i<n;i++){
        if(s[i]==a && s[i+1]== b)
            count++;
    }
    printf("%d",count);
    return 0;
}

这将修复查询中的语法错误。

标记为关闭重复的问题

答案 2 :(得分:0)

除非名称是引号,否则MySQL不允许创建名称仅由数字组成的表。见here

Identifiers may begin with a digit but unless quoted may not consist solely of digits.

尝试使用反引号(`)引用名称或在表名前加上前缀。

答案 3 :(得分:0)

我的建议:

  • 为您创建的表提供前缀。
  • 而且,我无法做到 查看表格中的主键。但是,没有必要 拥有它,但如果你的桌面设计没有主键,你需要 重新考虑你的设计。它对于加入表格起着至关重要的作用。

您的代码可以重写为:

#ifdef EXPORTS
    #define OUT //
#else
    #define OUT
#endif
OUT CustomObject* MeaningfulFunction1(PCWSTR param);

答案 4 :(得分:-1)

错误说&#34;创建数据库失败!&#34;。

所以我假设你还没有在连接查询中选择数据库。你应该这样做,或者选择#34;使用mydatabase;&#34;第一。当然,您可能需要先创建数据库。

使用PDO看起来像:

UUID uuid = PowerMockito.mock(UUID.class);

mockStatic(UUID.class);
when(UUID.randomUUID()).thenReturn(uuid);

String jsonToCompare = "{\"id\":\"" + uuid + "\",\"version\":1}";
String jsonFromJRS = jackRabbitService.addDocumentByJson(nameFile, bytes, nameApp, 5, jsonproperties);

assertEquals(jsonFromJRS, jsonToCompare);

请参阅dbname = myDB,它会为您预先选择正确的数据库。

参考:https://www.w3schools.com/php/php_mysql_connect.asp

使用mysql函数,您可以使用:

testAddDocumentsByJson(com.optimissa.test.junit.TestJackRabbitService): expected:<{"id":"[493410b3-dd0b-4b78-97bf-289f50f6e74f]","version":1}> but was:<{"id":"[00000000-0000-0000-0000-000000000000]","version":1}>

参考:http://php.net/manual/en/function.mysql-select-db.php