2014-10-08 1 views
-1

다음 코드를 사용하여 테이블에 열을 추가하려고합니다. 그것은 변수 ($ document_type)를 통해 열 이름을 삽입하도록하지 않습니다.PHP mysqli가 변수를 통해 열 (ALTER TABLE)을 추가하지 않습니다.

$document_type=$_POST['document_type']; 
$category=$_POST['category']; 
$file_extension=$_POST['file_extension']; 

// Database Insert 
$sql_link = Connect_MySQLi_DB(); 
$stmt1 = $sql_link->prepare("INSERT INTO document_type (document_type,category,file_extension) VALUES (?,?,?)"); 
$stmt1->bind_param('sss',$document_type,$category,$file_extension); 

if($stmt1->execute()){ 
//Problem Here 
$sql_link->query("ALTER TABLE hr_types ADD $document_type VARCHAR(255) NULL"); 
} 

정적으로 열 이름을 입력하면 작동합니다. 그러나 변수를 사용하면 오류가 발생하지 않으며 오류가 발생하지 않습니다. 무슨 일이 벌어지고 있는거야?

+0

변수가 올바르게 전달됩니다. 어떤 이유로 Yash Sodha의 대답이 기이하다. 아무도 설명 할 수 있을까요? –

+0

그것은 역행했다. 난 단지'hr_types'와'$ document_type'을 역 인용 부호로 감싸고 마술 같이 일하기 시작했습니다. 그것은 실제로 {...}없이 일했습니다. 나는 mysql 예약 키워드가 여기에 관련되어 있다고 생각한다. –

+0

변수 데이터에 공백이 있습니다! –

답변

-1

이렇게하면됩니다. :)

$sql_link->query("ALTER TABLE `hr_types` ADD `{$document_type}` varchar(255) NULL"); 
+0

당신은 최고입니다. 그것은 작동합니다! 그러나 어떻게 그런 일이 일어 났습니까? 설명해 주시겠습니까? –

+2

백틱은 순전히 SQL 구문입니다 (쿼리가 없이도 작동한다면 항상 사용하는 것이 좋지만 해결되지는 않습니다). 먼저'$ document_type'을 가졌습니다 - 만약 PHP가'$ document'라는 이름으로 변수를 알고 있다면 그것을 원합니까? 글쎄, 왜 안돼? '{..}'를 추가함으로써 전체 변수 이름을 사용하도록합니다. – kero

+0

그것은 역행입니다. 난 단지'hr_types'와'$ document_type'을 역 인용 부호로 감싸고 마술 같이 일하기 시작했습니다. 그것은 실제로 {...}없이 일했습니다. 나는 mysql 예약 키워드가 여기에 관련되어 있다고 생각한다. –

관련 문제