2017-03-20 6 views
0

지금 당분간이 작업을 해왔고 SQL에 약간의 문제가 있습니다. 최근에 나는 준비된 진술에 대해 조금 배웠고, 아무런 문제없이 이것까지 사용 해왔다. 그러나 이제는 내가 phymyadmin으로 코드화 된 쿼리를 수동으로 전송할 때 오류가 발생하지 않는 문제가 있습니다. 그러나 서버에서 코드를 excecute 할 때 어떤 레코드도 전혀 업데이트하지 않습니다.코드에서 실행될 때 업데이트 쿼리가 업데이트되지 않습니다.

excecuted 코드 :

$stmt = $conn->prepare("UPDATE `diensten` SET `titel` = ':titel', `content` = ':beschrijving', `img` = ':img' WHERE `diensten`.`id` = ':id'"); 
    $stmt->execute(array(':title' => $titel, ':beschrijving' => $beschrijving, ':img' => $img, ':id' => $id)); 

변명은 어떤 기능을 방해하지 않아야하지만 코드에서 네덜란드어.

+0

가 쿼리를 준비하여 변경이'$ stmt를 = $ conn-> ("UPDATE diensten 세트 titel을 준비 = idl : id "); ' – Mario

+0

복제본을 다시 열었습니다. (http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double- quotes-and-backticks-in-mysql) 이것은 다른 유형의 따옴표에 대해 일반적 이었기 때문에. 여기의 문제는 매개 변수를 사용한 타입 처리에 관한 것입니다. 따라서이 특정 문제에 대한 답변이 집중되지는 않습니다 (훌륭한 대답은 그것을 다루지 만 애플리케이션 언어가 아닌 MySQL의 준비된 문을 사용합니다) . –

답변

2

준비된 명령문을 사용할 때 값 주위에 작은 따옴표가 필요하지 않습니다. 형식은 매개 변수 삽입에 의해 처리됩니다. 그래서, 당신은 단순히 필요

$stmt = $conn->prepare(" 
UPDATE `diensten` 
    SET `titel` = :titel, 
     `content` = :beschrijving, 
     `img` = :img 
WHERE `diensten`.`id` = :id"); 

(나는 읽기 쉽도록 여러 줄에 넣어.)