2015-02-08 57 views
2

我试图在我的数据库中创建一个表格accountdb。我查询创建表:如何在数据库中创建表格

$query1="CREATE TABLE asset(id int(16) auto_increment primary key,TotBalance double(35),creditAmnt double(35),debitAmnt double(35))"; 

之后,当我在执行上面的查询,创建数据库,但在创建表的错误。错误如下:

error creating tableYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '),creditAmnt double(35),debitAmnt double(35))' at line 1 

我该如何解决这个错误?

+0

请帮助我,因为我是新的PHP。 – 2015-02-08 05:54:41

回答

4

这里是正确的查询:

CREATE TABLE asset(
     id int(16) auto_increment primary key NOT NULL, 
     TotBalance double(35,3), 
     creditAmnt double(35,3), 
     debitAmnt double(35,3) 
    ); 

当一个数据类型为双,浮法,或十进制,你需要指定的小数位。

正确语法来创建双数据类型列:

double(D,M); 

M是数字的总数,并且是D跟随在小数点的数字的数量。

参见:http://code.rohitink.com/2013/06/12/mysql-integer-float-decimal-data-types-differences/

我希望这可以帮助你。

+0

+1为谈论精度,但我会建议tauqeer也考虑这个:http://stackoverflow.com/a/224866/149076 ...处理货币存储和操纵。 – 2015-02-08 06:36:22

1
CREATE TABLE IF NOT EXIST asset( 
id int(16) auto_increment primary key 
,TotBalance double(35) 
,creditAmnt double(35) 
,debitAmnt double(35) 
); 
+0

对于“IF NOT EXIST”,+1是一种强大的应用程序确保表存在没有干扰现存数据库内容风险的方式。 DBMS编码新手的程序员应该考虑到这一点,并考虑了解“迁移”框架,以确保他们的模式与他们的代码保持同步。 – 2015-02-08 06:32:05

+0

代码的问题是您必须为数据类型double传递两个参数。只有double(35)将不起作用。你必须传递像double(35,2)这样的数字,其中2是小数位数。 – Chatz 2015-02-08 06:35:40

1

CREATE TABLE assetsid INT(16)NOT NULL AUTO_INCREMENT, Tot_balance BIGINT(20)NOT NULL, Credit_Amt BIGINT(20)NOT NULL, Debit_Amt BIGINT(20)NOT NULL, PRIMARY KEY(id) )ENGINE = MyISAM DEFAULT CHARSET = latin1