2012-03-07 4 views
-1

나는 ques.php이라는 페이지가 있습니다. 사용자의 대답이 올 바르면 다음 ques1.php으로 연결됩니다. 사용자가 게시 한 답변은 check.php로 확인하고 올바른 경우 데이터베이스의 사용자 계정에 새 URL (ques1.php)을 저장하려고합니다.왜 데이터베이스에서 URL을 업데이트하지 않습니다


check.php login.php에서

<?php 

    require_once("./include/membersite_config.php"); 

    if (!$fgmembersite->CheckLogin()) { 
    $fgmembersite->RedirectToURL("login.php"); 
    exit; 
    } 

    mysql_connect("localhost", "root", "") or die(mysql_error()); 
    mysql_select_db("simplelogin") or die(mysql_error()); 

    $data = mysql_query("SELECT * FROM member") or die(mysql_error()); 

    while($info = mysql_fetch_array($data)) { 
    // print $info['username']; 
    if ($info['username'] == $fgmembersite->UserName()) { 
     $fullname = $info['name']; 
     $username = $info['username']; 
     $password = $info['password']; 
     $email = $info['email']; 
     $url = $info ['url']; 
     break; 
    } 
    } 

    $answer = $_POST['answer']; 
    if ($answer == "correct") { 
    "UPDATE `simplelogin`.`member` 
    SET `url` = 'ques1.php' 
    WHERE 
     `member`.`name` = '$fullname' 
     AND `member`.`email` = '$email' 
     AND `member`.`username` = '$username' 
     AND `member`.`password` = '$password' 
     AND `member`.`confirmcode` = 'y' 
     AND `member`.`url` = '$url'"; 

    //in place of above update query i had also used 
    //"UPDATE member 
    //SET url = 'ques1.php' 
    //WHERE username = '$username'" 

    Header("Location:ques1.php"); 

    } else { 

    Header("Location: ques.php"); 

    } 

?> 

function UserName() { 
    return isset($_SESSION['user_name'])?$_SESSION['user_name']:''; 
} 

login.php

<?php 

    require_once("./include/membersite_config.php"); 

    if (isset($_POST['submitted'])) { 

    if ($fgmembersite->Login()) { 

     //$fgmembersite->RedirectToURL("login-home.php"); 

     mysql_connect("localhost", "root", "") or die(mysql_error()); 
     mysql_select_db("simplelogin") or die(mysql_error()); 

     $data = mysql_query("SELECT * FROM member") or die(mysql_error()); 
     while ($info = mysql_fetch_array($data)) { 
     if ($info['username']==($fgmembersite->SafeDisplay('username'))) { 
      $url = $info['url']; 
      break; 
     } 
     } 

     $fgmembersite->RedirectToURL("$url"); 

    } 
    } 

?> 

가 나는 URL f를 검색하고 데이터베이스를 리디렉션하고 사용자를 리디렉션 - 기본적으로 사용자의 URL은 ques.php입니다.

내 검색어가 내 데이터베이스의 URL을 업데이트하지 않는 이유는 무엇입니까?

+0

전체 코드를 복사하고 실수를 바로 잡기 위해서가 아니라 매우 짧은 예를 만드십시오. – Sgoettschkes

+0

while ($ info = mysql_fetch_array ($ data)) { // 인쇄 $ info [ 'username']; if ($ info [ 'username'] == $ fgmembersite-> UserName()) { $ username = $ info [ 'username']; 휴식; }} $ answer = $ _POST [ '대답']; if ($ answer == "correct") { sql_query ("UPDATE 멤버 SET URL = 'ques1.php'WHERE username = '$ username'"); } –

+0

짧은 예제를 만들었습니다. http://stackoverflow.com/questions/9599008/update-query-is-not-updating-url-in-database –

답변

1

데이터베이스 결과 세트를 반복하고 이미 가지고있는 값과 비교하면서 이미 가지고있는 값을 얻으려는 것입니다. 기껏해야이 작업은 사용자가 데이터베이스에 있는지 확인하며, 최악의 경우에는 아무것도 수행하지 않습니다.

UPDATE의 경우 데이터베이스 테이블의 기본 키를 사용해야합니다. 모범 사례는 행을 식별하는 것 이외의 데이터와는 관련이없는 자동 증가 정수 여야합니다. $fgmembersite 개체를 초기화 할 때이 값을 저장해야하므로 사용자에 대한 참조가 필요한 데이터베이스 쿼리에서 쉽게 사용할 수 있습니다. 최악의 경우 테이블의 username 열에 고유 한 인덱스가 있어야합니다.

당신은 완전히 SELECT 쿼리를 제거 할 수 있습니다 - 당신은 단지 UPDATE에서 직접이 사용할 수 있도록 이미, 사용자 이름이 있습니다


check.php :

<?php 

    require_once("./include/membersite_config.php"); 

    // Redirect to login page if not already authenticated 
    if (!$fgmembersite->CheckLogin()) { 
    $fgmembersite->RedirectToURL("login.php"); 
    exit; 
    } 

    // Define DB connection info in variables for readability/maintainability 
    $dbHost = 'localhost'; 
    $dbUser = 'root'; // NEVER use root for a live website! 
    $dbPass = ''; // A blank root password? Really? 
    $dbName = 'simplelogin'; 

    // Connect to database - NEVER show the result of mysql_error() in a live site! 
    mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error()); 
    mysql_select_db($dbName) or die(mysql_error()); 

    if ($_POST['answer'] == 'correct') 

    // Update the database with the new URL 
    $query = " 
     UPDATE `member` 
     SET `url` = 'ques1.php' 
     WHERE `username` = '".mysql_real_escape_string($fgmembersite->UserName())."' 
    "; 
    mysql_query($query) or die(mysql_error()); 

    // This line should help you debug the query. REMOVE IT before putting this script on a live site! 
    if (!mysql_affected_rows()) die("No rows were affected by the query.\nQuery: $query\nError: ".mysql_error()); 

    // Redirect to ques1.php 
    // Note that a header redirect should provide a FULL url, not just a relative path. 
    header("Location:ques1.php"); 

    } else { 

    // Redirect to ques.php 
    header("Location: ques.php"); 

    } 

?> 

로그인하십시오.PHP

<?php 

    require_once("./include/membersite_config.php"); 

    if (isset($_POST['submitted']) && $fgmembersite->Login()) { 

    // Define DB connection info in variables for readability/maintainability 
    $dbHost = 'localhost'; 
    $dbUser = 'root'; // NEVER use root for a live website! 
    $dbPass = ''; // A blank root password? Really? 
    $dbName = 'simplelogin'; 

    // Connect to database - NEVER show the result of mysql_error() in a live site! 
    mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error()); 
    mysql_select_db($dbName) or die(mysql_error()); 

    // Fetch the URL from the database 
    $query = " 
     SELECT `url` 
     FROM `member` 
     WHERE `username` = '".mysql_real_escape_string($fgmembersite->UserName())."' 
    "; 
    $result = mysql_query($query) or die(mysql_error()); 
    if (!mysql_num_rows($result)) die('Invalid user name'); 
    $info = mysql_fetch_assoc($result); 
    $url = $info['url']; 

    // Redirect to URL 
    // Add some error checking to verify that $url actually contains something valid! 
    $fgmembersite->RedirectToURL($url); 

    } else { 

    // What happens if the condition fails? 

    } 

?> 
2
"UPDATE `simplelogin`.`member` SET `url` = 'ques1.php' WHERE 
    `member`.`name` ='$fullname' 
AND `member`.`email` = '$email' AND `member`.`username` = '$username' 
AND `member`.`password` = '$password' 
AND `member`.`confirmcode` = 'y' AND `member`.`url` = '$url'" ; 

이 오지 않아요 쿼리로 실행을 한 것으로 나타났습니다 당신이 그 문으로 무엇을하려고 아무 생각이 없다, 그래서 당신은 mysql_query() 함수 내에서 그것을 배치하지 않았습니다.

대신을 시도해보십시오

이 시도, 그것은 다시 단순화하고 오류 메시지 또는 포트를 기쁘게하지 않을 경우 작동합니다 됐어요 :

mysql_query(
"UPDATE `simplelogin`.`member` SET `url` = 'ques1.php' WHERE 
`member`.`name` ='$fullname' 
AND `member`.`email` = '$email' AND `member`.`username` = '$username' 
AND `member`.`password` = '$password' 
AND `member`.`confirmcode` = 'y' AND `member`.`url` = '$url'"); 

인해 아래 댓글로 업데이트 하지

mysql_query(" 
    UPDATE 
     member 
    SET 
     url = 'ques1.php' 
    WHERE 
     name = '$fullname' 
    AND 
     email = '$email' 
    AND 
     username = '$username' 
    AND 
     password = '$password' 
    AND 
     confirmcode = 'y' 
    AND 
     url = '$url' 
") or die('Unable to update members URL: ' . mysql_error()); 
+0

그것도 작동하지 않습니다 : (이제 또한! –

+0

) 'with ') 문제가 발생했을 수도 있습니다. – skos

+0

@ user1253753 제 답변이 업데이트되었습니다. 또한'$ url'이 정확히 전달되고 있습니까? 그리고 여러분은 그 쿼리가 모든 기준을 충족하고 있는지 확신합니까? 예를 들어 데이터베이스에서 레코드를 찾는 것입니까? 이메일, 사용자 이름, 암호, 확인 코드 및 URL과 정확하게 일치합니까? – RobFos

1

는 .... 쿼리 친구를 실행 사용 mysql_query("$your_update query");

+0

이 작동하지 않습니다. –

관련 문제