2013-03-25 2 views
-3

pdo와 mysql을 사용하고 이미 기존 테이블에 열을 추가하는 방법을 알고 있지만 입력 필드에서 값을 사용하여 시도하면 변수 $의 이름 .... 열로 추가됩니다.
I 열로서 입력 필드의 값을 추가해야 할 코드는 다음과 같다 :PHP의 입력 필드에서 기존 테이블에 열 추가

public function insertAlterTable($colName) 
{ 
    $this->pdo = $this->connectMySql(); 
    $query = 'ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAULT "nee"'; 
    $stmt = $this->pdo->prepare($query); 
    if(!$stmt->execute()){ 
     return false; 
    } 
    $this->pdo = null; 
    return true; 
} 

이 코드 시도 캐치 블록 안에 싸여있다.
또한 클래스 내부에 있습니다. 나는 기존의 테이블에 컬럼으로 입력 필드 colname에서 값을 추가 할 수있는 방법

insertAlterTable($_POST['colname']); 

:에서 FrontPage에서
내가 좋아하는이 코드를 사용합니다.
도와주세요.

나는 다음과 같이 코드를 업데이트했습니다, 그래서 나를 위해 작동 : 작은 따옴표를 사용하는 경우 PHP에서

public function insertAlterTable($colName) 
{ 
    $colName = mysql_real_escape_string($colName); 
    $this->pdo = $this->connectMySql(); 
    $query = "ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAULT \"nee\""; 
    $stmt = $this->pdo->prepare($query); 
    if(!$stmt->execute()){ 
     return false; 
    } 
    $this->pdo = null; 
    return true; 
} 
+0

http://www.php.net/manual/en/language .types.string.php –

+0

여기에'$ _POST [ 'colname'] 변수를 사용해서는 안됩니다. 이것은 누군가가 원하는대로 SQL을 주입 할 수있는 큰 보안 허점입니다. – acme

+0

@acme 나는 prepare 문이이를 처리 할 것이라고 생각했기 때문에 mysql_real_escape_string을 사용할 필요가 없다. – PDOProgrammer

답변

2

, 변수는 확장되지 않습니다.

$a = "hello"; 
$b = "$a dude";    // $b is now "hello dude" 
$c = '$a dude';    // $c is now "$a dude" 

사용 따옴표 또는 문자열 연결하고 괜찮 :

화인 설명서의
$query = "ALTER TABLE nbs_events ADD $colName CHAR(5) NULL DEFAULT \"nee\""; 

더 : http://php.net/manual/en/language.types.string.php

+0

쿼리의 $ colName 주위에 큰 따옴표를 추가하려고했지만 아무 것도 추가되지 않고 함수가 false를 반환하면; – PDOProgrammer

+0

설명서를 읽었습니까? –

+0

그래, 몇 가지 시도했지만 작동하도록 할 수 없습니다. – PDOProgrammer