2011-03-03 5 views
0

변수에 영향을받는 테이블을 만들 수 있습니까?변수 기반 테이블

표준 테이블을 만드는 대신에 좋아합니다. 사용자가 사용자 지정 테이블을 만들도록 할 수 있습니까? 가입시와 마찬가지로 데이터베이스에서 CREATE TABLE을 수행 할 수 있으며 테이블의 이름은 PHP 변수의 영향을 받습니까? 그리고 테이블에있는 들판도 똑같습니까?

예를 들어 표의 경우 $username.table이고 표의 경우 필드가 $username_field입니까?

+8

당신은 이것을 원하지 않습니다. 귀하의 모델을 다시 생각하십시오 –

+0

왜? 사용자가 필요한 필드를 추가 할 수 있어야합니다. 그들이 온라인 양식을 만들게하는 것과 같습니다. – AAA

+1

내 대답보기 ... 엔지니어링은 모든 것입니다 –

답변

2

확실하게 작성할 수 있습니다. CREATE TABLE/ALTER TABLE 개의 검색어를 작성해야합니다.

사용자에게 맞춤 입력란을 만들 수있는 기능을 제공하려면 맞춤/동적으로 생성 된 표가 필요하지 않습니다.

대신 사용자 생성 필드를 행으로 저장할 수있는 Custom_Fields 테이블을 만드는 것이 좋습니다. 예 :

User Table 
| userid | username | 

Custom Field Table 
| fieldid | userid | field_name | field_value 

Get My Custom Fields/Values: 
SELECT `field_name`,`field_value` FROM `custom_fields` WHERE `userid`=$myUserId 
+0

개인 사용자에게 thehir 계정에 필드를 추가하는 기능을 제공합니다. – AAA

+2

이것은'text' 형 필드로 가능합니다.이 필드는'json_encode'd 맞춤형 필드 배열을 가질 수 있습니다. 또는 관계형 테이블이 확장 가능합니다. ** ** 사용자가 테이블을 만들 수있는 권한을주지 마십시오. – Shad

+0

이유에 대해 자세히 설명 할 수 있습니까? 나는이 일에 매우 익숙하므로 당면한 위기를 가지고 싶지는 않습니다! P – AAA

2

옵션으로 각 사용자에 대해 SQLite 데이터베이스를 만들고 사용자 지정 디렉토리에 둘 수 있습니다.

+0

끔찍한 생각은 없지만 ... 단지 1 개의 sqlite 데이터베이스를 사용하지 않는 이유는 무엇입니까? : P –

+1

나는 당신의 의견에 동의한다. 예제 에서처럼 작은 조각으로 폼을 분할하는 것이 훨씬 현명하다. 그러나 각 사용자 또는 응용 프로그램을 격리하려는 경우 유용 할 수 있습니다. 또한 각 사용자를 백업/복원하는 것이 훨씬 쉽습니다. – Nazariy

+0

멋진 레토르트! 나는 동의해야한다. 분명히, 무엇이든과 마찬가지로, 그것은 이익/단점에 따라주고받는 것입니다. –

1

이것은 데이터베이스를 사용하는 방식이 아닙니다. 이와 같이 데이터베이스를 설정하면 쿼리 언어의 모든 기능을 사용할 수 없게됩니다.

그러나 테이블을 만들려면 (MySQL에서 사용하는 것으로 가정) CREATE TABLE 쿼리를 사용하십시오.

3

왜? 사용자가 필요한 필드를 추가 할 수 있어야합니다. 그들이 온라인 양식을 만들게하는 것과 같습니다.

그런 다음 데이터베이스를 조정해야합니다. 게으르지 않고 양식 필드 용 테이블을 만들 수 없습니다. 이것은 보안상의 위험 일뿐만 아니라 결코 확장되지 않습니다. 다음은 동적 폼 생성을 처리하기 위해 테이블 ​​기반 시스템을 설계하는 방법에 대한 실례가 아닙니다.

DROP TABLE "main"."form"; 
CREATE TABLE "form" (
"id" INTEGER NOT NULL, 
"name" TEXT NOT NULL, 
PRIMARY KEY ("id") 
); 
DROP TABLE "main"."form_field"; 
CREATE TABLE "form_field" (
"form" INTEGER NOT NULL, 
"id" INTEGER NOT NULL, 
"name" TEXT NOT NULL, 
PRIMARY KEY ("form", "id") 
); 

당신의 상상력이 당신을 이곳에서 데려 올 수 있기를 바랍니다.

관련 문제