2014-06-21 4 views
-2

오류가 발생했습니다.이 오류가 발생했는데 아무나 해결할 수 있도록 도와주세요. 전자 메일이 중복되었거나 데이터베이스에없는 경우 코드를 필터링하여 오류가 시작됩니다. 여기 내 pdo에서 'PDOException'오류가 발생했습니다. 내 코드를 실행 한 후

은 내가 가진 오류입니다 :

<?php 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$db = "test"; 

$dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass); 
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


$name = @$_POST['name']; 
$age = @$_POST['age']; 
$address = @$_POST['address']; 
$gender = @$_POST['gender']; 
$email = @$_POST['email']; 

     $dupesql = "SELECT * FROM students WHERE email = :email "; 

     $dupesql = $dbc->prepare($dupesql); 
     $dupesql->bindParam(':name', $email); 
     $dupesql->execute(); 
     $num_rows = $dupesql->rowCount(); 

     if($num_rows === 0) 
     { 
     echo "1"; 
     $q = "INSERT INTO students(name, age, address, gender, email) VALUES(:name, :age, :address, :gender, :email)"; 

     $query = $dbc->prepare($q); 
     $query->bindParam(':name', $name); 
     $query->bindParam(':age', $age); 
     $query->bindParam(':address', $address); 
     $query->bindParam(':gender', $gender); 
     $query->bindParam(':email', $email); 

     $results = $query->execute(); 


     }else{ 
     echo "0"; 
     exit; 
     }  

?> 
+2

'$ dupesql-> bindParam (': name', $ email); '? 그것은 ': email'이어야합니다 –

+0

@ 1nflktd 오, 고맙습니다. 나는 그것을 놓쳤습니다. 답변에 넣어서 투표 할 수 있습니다. – user3762241

+1

왜 예외를 잡지 않았습니까? 왜 $ _POST 앞에 연산자가 들리지 않습니까? 왜 bindValue가 아닌 bindParam을 사용합니까? 둘의 차이를 아십니까? –

답변

1

img 당신이 당신의 쿼리에 잘못된 매개 변수를 사용하고 있기 때문에 그럼 당신이 오류에 직면하고있다.

$dupesql->bindParam(':name', $email); 

:name는 그래서 :email해야 존재하지 않습니다.

관련 문제