2012-11-23 3 views
1

제출 한 양식을 데이터베이스에 삽입해야하는 양식을 만들었습니다. INSERT INTO 테이블 (name, comment) VALUES ($ name, $ comment)와 같은 쿼리 문자열에서 변수 이름을 사용할 경우 작동하지만 pdo prepared statements를 사용하면 현재 코드가 있습니다.php의 PDO를 사용하여 데이터베이스에 데이터를 삽입 할 수 없습니다

move_uploaded_file($_FILES["file"]["tmp_name"], "../img/" . $_FILES["file"]["name"]); 
$stmt = $conn->prepare('INSERT INTO instructors (name, bio, picture) VALUES (:name, :bio, :picture)'); 
$stmt->bindParam(':name', $_POST['name']); 
$stmt->bindParam(':bio', $_POST['bio']); 
$stmt->bindParam(':picture', $_POST['file']['name']); 
$stmt->execute(); 

파일 get이 업로드되었고 지정한 디렉토리로 이동되었지만 데이터가 데이터베이스에 삽입되지 않습니다. 어떤 아이디어?

+2

을보십시오. '$ stmt-> errorInfo'를 살펴보십시오. –

+3

'$ _POST [ 'file'] [ 'name']'대신에'$ _FILES [ 'file'] [ 'name']'을 사용하는 것처럼 보이지만, 삽입이 실패하지는 않을 것입니다. 'picture' 컬럼이'NOT NULL'이 아닌 한. –

+0

@MichaelBerkowski 확실히 값이 비어있는 열에 따라 INSERT에 영향을 미칩니 까? – George

답변

-1

난 당신이 같은 일을한다고 생각 :

move_uploaded_file($_FILES["file"]["tmp_name"], "../img/" . $_FILES["file"]["name"]); 
$stmt = $conn->prepare('INSERT INTO instructors (name, bio, picture) VALUES (:name, :bio, :picture)'); 

$stmt->execute(array(
    ':name'=> $_POST['name'], 
    ':bio'=> $_POST['bio'], 
    ':picture'=> $_POST['file']['name'] 
)); 
+0

왜 부정적입니까? 이것은 PHP 매뉴얼에서 바로 나온다. 그리고 그는 "INSERT INTO 테이블 (name, comment) VALUES ($ name, $ comment)와 같은 쿼리 문자열에서 변수 이름을 사용하면 작동한다."때문에 문제는 이름이 아니다. 열의 또는 null 값이 만족 스럽습니다. –

+0

나는 투표를하지 않았지만 상용구 예제는 관계가 없으므로 제거해야합니다. – tadman

+0

감사합니다. 감사합니다. authr의 코드로 제안 사항 만 남겨 둡니다. –

0

는 SQL 오류가 될 수

move_uploaded_file($_FILES["file"]["tmp_name"], "../img/" . $_FILES["file"]["name"]); 
$stmt = $conn->prepare('INSERT INTO instructors (name, bio, picture) VALUES (:name, :bio, :picture)'); 
$stmt->bindParam(':name', $_POST['name']); 
$stmt->bindParam(':bio', $_POST['bio']); 
$stmt->bindParam(':picture', $_POST['filename']);// Only 1 set of []s in $_POST[] 
$stmt->execute(); 
관련 문제