2015-01-11 3 views
2

그래서이 업데이트 문을 사용하여 $ _POST 변수를 덤프하면 원하는 결과를 얻을 수 있습니다.MySQLi 업데이트 준비된 문이 데이터베이스를 업데이트하지 않음

$stmt = $dbConnectionW->prepare("UPDATE members SET 
          fname='". mysqli_real_escape_string($dbConnectionW, $_POST['fname']) ."', 
          sname='". mysqli_real_escape_string($dbConnectionW, $_POST['sname']) ."', 
          gender='". mysqli_real_escape_string($dbConnectionW, $_POST['gender']) ."', 
          nationality='". mysqli_real_escape_string($dbConnectionW, $_POST['nation']) ."', 
          year='". mysqli_real_escape_string($dbConnectionW, $_POST['year']) ."', 
          dep1='". mysqli_real_escape_string($dbConnectionW, $_POST['dep1']) ."', 
          dep2='". mysqli_real_escape_string($dbConnectionW, $_POST['dep2']) ."', 
          f_pos='". mysqli_real_escape_string($dbConnectionW, $_POST['f_pos']) ."', 
          f_region='". mysqli_real_escape_string($dbConnectionW, $_POST['f_region']) ."', 
          exp_comp='".$comp."', 
          exp_dep='".$comp_dep."', 
          shareinfo='".$shareinfo."', 
          interest='".$interest."', 
          userconfirm = '1' 
           WHERE confirmcode = '".$passkey."';"); 
       $stmt->execute(); 
       if (!$stmt) 
       { 
       die('Error: ' . mysqli_error($dbConnectionW)); 
       } 
       $smst-> close(); }}} mysqli_close($dbConnectionW); 
     } 

기본적으로 문제는 데이터베이스를 업데이트하지 않는다는 것입니다. 오류없이 작동하지만이 sql/php 시도 후에 데이터베이스가 업데이트되지 않습니다.

누구든지 내 코드에 문제가있는 것을 볼 수 있습니까? 내 데이터베이스가 업데이트되지 않는 이유는 무엇입니까? 나는 지난 1 시간 동안이 일을 시작했다.

+0

'$ passKey'의 값이 맞습니까? 거래를 저 지르시겠습니까? – Mureinik

+0

준비된 명령문에서 변수를 이스케이프 할 필요는 없으며 명령문을 실행하기 전에 변수를 바인드해야합니다. – worldofjr

+0

$ passkey가 정확하고, 그냥 체크하고 이메일로 사용자를 찾는 것을 시도했습니다. 또한이 코드 위에 변수를 바인딩했지만 여기에 표시하지 않았습니다. – QuackMan245

답변

2

준비된 명령문에서 변수를 이스케이프 할 필요가 없으며 명령문을 실행하기 전에 변수를 바인드해야합니다. 또한 열 이름은`marks 안에 있어야합니다.

$stmt = $dbConnectionW->prepare("UPDATE members SET 
         `fname`=?, 
         `sname`=?, 
         `gender`=?, 
         `nationality`=?, 
         `year`=?, 
         `dep1`=?, 
         `dep2`=?, 
         `f_pos`=?, 
         `f_region`=?, 
         `exp_comp`=?, 
         `exp_dep`=?, 
         `shareinfo`=?, 
         `interest`=?, 
         `userconfirm`=? 
          WHERE `confirmcode`=?"); 
$stmt->bind_param('ssssissssssssis',$_POST['fname'],$_POST['sname'],$_POST['gender'],...);   
$stmt->execute(); 

간결함을 위해 모든 바인딩 된 매개 변수를 포함하지 않았습니다.

희망이 도움이됩니다.

+0

그것은 효과가 있습니다, 당신은 내 빛이며 구원자입니다. 고맙습니다 – QuackMan245