2015-02-08 3 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. –

ответ

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 ... для работы с хранением и манипуляцией валютой. –

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

+1 для «ЕСЛИ НЕ СУЩЕСТВУЕТ» как надежный способ для приложений, чтобы гарантировать существование таблиц без риска нарушения существующего содержимого базы данных. Программисты, новые для кодирования СУБД, должны принять это близко к сердцу, а также рассмотреть возможность изучения структуры «миграции», чтобы гарантировать, что их схема поддерживается в синхронизации с их кодом. –

+0

проблема с кодом заключалась в том, что вам нужно передать два параметра для типа данных double. просто double (35) не будет работать. Вы должны передать что-то вроде double (35,2), где 2 - количество знаков после запятой. – Chatz

1

CREATE TABLE assets ( id INT (16) NOT NULL AUTO_INCREMENT, Tot_balance BigInt (20) NOT NULL, Credit_Amt BIGINT (20) NOT NULL, Debit_Amt BIGINT (20) NOT NULL, ПЕРВИЧНЫЙ KEY (id) ) ENGINE = MyISAM DEFAULT CHARSET = latin1

Смежные вопросы