2013-03-01 3 views
0

회원들이 정보를 업데이트 할 수 있도록 사용자 설정 페이지를 만들고 있습니다. 그러나 오류가 생성되지 않고 성공 페이지가 표시 되더라도 변경된 정보 표시는 데이터베이스에서 업데이트되지 않습니다. 내가 배열을 반향 시도하고 새로운 데이터 중 하나를 구문 분석하지 의미가 비어있는 것으로 보입니다. 양식에서 데이터를 저장하지 않는 배열

<?php 
include ("storescripts/init.php"); 
protect_page(); 
if (empty($_POST) === false) { 
$required_fields = array('mem_email','mem_first_name','mem_last_name'); 
foreach ($_POST as $key=>$value) { 
    if (empty($value) && in_array($key, $required_fields) == true) { 
     $errors[] = 'Fields marked with an asterisk are required'; 
     break 1; 
    } 
} 
if (empty($errors) === true) { 
    if (filter_var($_POST['mem_email'], FILTER_VALIDATE_EMAIL) === false) { 
     $errors[] = 'A valid email address is required'; 
    } else if(user_exists($_POST['mem_email']) === 1 && $member_data['mem_email'] !== $_POST['mem_email']) { 
     $errors[] = 'Sorry, the email \'' . htmlentities($_POST['mem_email']) . '\' is already in use'; 
    } 
} 
} 
if (empty($_POST) === false && empty($errors) === true) { 

$update_data = array(
     'mem_first_name' => $_POST['mem_first_name'], 
     'mem_last_name' => $_POST['mem_last_name'], 
     'mem_email' => $_POST['mem_email'], 
     'allow_email' => ($_POST['allow_email']) ? 1 : 0); 

     update_user($session_member_id, $update_data); 
     header('Location: settings.php?success=1'); 
     die(); 
} 
include ("includes/overall/head.php"); 
?> 
<?php include ("includes/overall/template_header.php");?> 
<div id="mainDivShort"> 
    <h1>User Settings</h1> 
    <div id="divBreak"></div> 
    <?php include ("includes/overall/column_left.php");?> 
    <div id="middleContent"> 
    <?php if (isset($_GET['success']) && isset($_GET['success'])) { 
      echo 'Your details have been updated'; 
      } else { 
       if (empty($errors) === false) { 
       echo output_errors($errors); 
       }?> 
     <form action="" method="post"> 
      <ul> 
       <li>First Name*: <br> <input type="text" name="mem_first_name" 
        value="<?php echo $member_data['mem_first_name'];?>"> 
       </li> 
       <li>Last Name*: <br> <input type="text" name="mem_last_name" 
        value="<?php echo $member_data['mem_last_name'];?>"> 
       </li> 
       <li>Email*: <br> <input type="text" name="mem_email" 
        value="<?php echo $member_data['mem_email'];? >"> 
       </li> 
       <li> 
        <input type="checkbox" name="allow_email" <? php if ($member_data['allow_email'] == 1) { echo 'checked="checked"'; } ?>> Would you like to receive an email about news and promotions? 
       </li> 
       <li><input type="submit" value="Update"> 
       </li> 
      </ul> 
     </form> 
     <?php }?> 
    </div> 
    <?php include ("includes/overall/column_right.php");?> 
</div> 
<?php include ("includes/overall/template_footer.php");?> 

그리고 내 update_user 기능

function update_user($mem_id, $update_data) { 
$update = array(); 
array_walk($update_data, 'array_sanitize'); 

foreach ($update_data as $field=>$data) { 
    $update[] = '`' . $field . '` = \'' . $data . '\''; 
} 

mysql_query("UPDATE `members` SET " . implode(', ', $update) . " WHERE `mem_id`= $mem_id"); 
} 
+0

이 있으면 DB에서이 $의 SQL 출력이 확인이

function update_user($mem_id, $update_data) { $update = array(); array_walk($update_data, 'array_sanitize'); foreach ($update_data as $field=>$data) { $update[] = ''' . $field . '' = \'' . $data . '\''; } $sql = "UPDATE 'members' SET " . implode(', ', $update) . " WHERE 'mem_id'= $mem_id"; echo $sql; exit(); //mysql_query("UPDATE 'members' SET " . implode(', ', $update) . " WHERE 'mem_id'= $mem_id"); } 

화재 시도 울리고 있니? –

+0

배열은 라인 22의 $ update_data입니다 – jhetheringt7

답변

0

당신이 당신의 update_user 기능에서 올바른 데이터를 수신합니까?

배열 당신이 무엇을 .. 당신은 SQL 오류 또는 다른 DB 오류 당신이 코드를 많이 가지고

+0

올바른 데이터가 표시되고 있습니다. 단지 변경되지 않습니다. – jhetheringt7

+0

SQL에서 오류가 발생하지 않았습니까? – user1833222

+0

새 배열이 비어있는 곳에서 언급 했습니까? – user1833222

관련 문제