2012-02-07 5 views
0

PHP를 통해 테이블을 업데이트하는 데 어려움이 있습니다. MySQL 프롬프트 또는 클라이언트 응용 프로그램을 사용하면 SQL 명령이 제대로 작동하지만 PDO를 사용하여 PHP에서 시도 할 때 실패합니다.PHP PDO 선언 MySQL 쿼리 실패

'내림차순'필드와 PHP 스크립트가 작동합니다. 생각의 ASC와 혼동하기/DES

$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
$sql = "UPDATE Menu SET name=:name, desc=:desc WHERE id = :id" 

$st = $conn->prepare ($sql); 


$st->bindValue(":id", $this->id, PDO::PARAM_INT); 
$st->bindValue(":name", $this->name, PDO::PARAM_STR); 
$st->bindValue(":desc", $this->name, PDO::PARAM_STR); 


$b = $st->execute(); 

임 확신은 단지 SQL 언어 구조에 필드 이름과 혼동하지만, DESC는 필드 이름이있는 PDO 개체/준비된 문장을 말하는 방법이있다 ?

즉 뭔가 LINKE 당신은 id = 1

(this does not work by the way) 
    $sql = "UPDATE Menu SET name=:name, \'desc\'=:desc WHERE id=:id 
+0

백틱으로 시도 했습니까? –

답변

2

, 존재하지 않는 매개 변수에 바인딩 할 수 없습니다 id = :id

.

또한 DESC은 예약어이므로 역 따옴표로 인용하지 않고 사용할 수 없습니다.

$sql = "UPDATE `Menu` SET `name`=:name, `desc`=:desc WHERE `id`=:id" 
+0

죄송합니다, 더 나은 예제를 수정, btw : 이것은 내 실제 코드가 아닙니다 – IEnumerable

+0

아.이 문자를 사용하는 이유 아 ... – IEnumerable

+0

나는이 온라인을 볼 때마다 작은 따옴표라고 생각했습니다! 이제 이것이 의미가 있습니다. 건배 너무 많이. 지금 일하는 모든 – IEnumerable