2012-04-04 3 views
5

ALTER TABLE으로 매개 변수를 PDO에 추가 할 수 있습니까?PDO 및 매개 변수가있는 ALTER TABLE?

나는 시도했다

$q = $dbc -> prepare("ALTER TABLE emblems ADD ? TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', ADD ? DATETIME NOT NULL"); 
$q -> execute(array($emblemDB, $emblemDB . 'Date')); 

그러나 실패했습니다.

감사합니다.

+0

실패했기 때문에 가능하지 않습니다. – hjpotter92

+2

@TheJumpingFrog 테스트에서 실패한 스택 오버플로에 대해 많은 질문을했기 때문에 모든 테스트 중 하나가 응답되었습니다. – cgwebprojects

답변

0

내 지식에 대한 alter table 쿼리의 특성은 준비된 문이 아닙니다. 그러나 대부분의 테이블 변경 쿼리에는 beginTransactioncommit() 함수를 호출해야합니다.

$dbh->beginTransaction(); 

/* Change the database schema and data */ 
$sth = $dbh->exec("DROP TABLE fruit"); 
$sth = $dbh->exec("UPDATE dessert 
SET name = 'hamburger'"); 
$sth = $dbh->exec("ALTER TABLE `dessert` ADD `field1` VARCHAR(24) NOT NULL"); 


/* Commit changes */ 
$dbh->commit(); 

준비된 문장을 사용하여 내가 아는 한 실행할 수 있지만.

참고 :
MySQL은 암시 적으로 CREATE TABLEDROP TABLE 쿼리에 커밋() 함수를 호출, 그래서 롤백 할 수 없습니다.

alter table 쿼리에 변수를 전달하려는 경우 사용자 입력 (해당 위치가 어디인지)이 있는지 확인하고 db에 저장 프로 시저를 만든 다음 PDO를 사용하여 호출하십시오 inout을 위해 변수를 첨부하십시오. 귀하의 질문에 대한 한마디 한마디.

+0

암시 적 커밋이 주어지면 MySQL에서 DDL을 수행 할 때 트랜잭션을 열지 않아도됩니다. 실제로, 그것이 작동 할 수있는 척하는 * 나쁜 척하는 충고입니다. – Charles

관련 문제