2011-08-02 6 views
0
include("connect.php"); 
    $username = mysql_real_escape_string($_REQUEST[username]); 


    function updateData($key){ 
    $field = "$$key"; 
    if($field == "") { 
    } else { 
    $sql= "UPDATE users SET $key = '$field' WHERE username ='$username'"; 
    mysql_query ($sql , $conexion); 
    } 
    } 

    updateData('password'); 
    updateData('firstname'); 

내가 만들고자하는 것은이 PHP 파일이 필드를 인식하고 입력 필드 값이 비어있는 경우 저장하지 않는 자동 방법입니다.이 구조로 MySQL 요청을 실행할 수 있습니까?

필드의 이름을 수동으로 $key 공백에두면 작동하지만 일단 기능을 실행하면 작동하지 않습니다.

답변

3

에 미치는 변수 $username, $sql는, $conexion이 기능에서 인식하지 않는 것이

모습이 같은 코드를 작성하지 마십시오 생각합니다. 우선 들어

  • , 그것은 읽을 수 없습니다 - 그것은이 데이터에서 오는 사용되는 곳 알아 내기 위해이 기능을 찾아 가기 위해 코드를 유지하고 누구든지 있습니다.

  • 둘째로, 변수 범위 내에서 문제가 발생합니다. global 키워드를 사용하여 변수를 참조하지 않으면 변수가 정의되지 않습니다.

    function updateData($username, $key, $value){ 
        if($key != "" && $value != "") { 
         $sql = "UPDATE users SET $key = '$value' WHERE username ='$username'"; 
         mysql_query($sql, $conexion); 
        } 
    } 
    

    및 관련 값을 전달;

대신,이 같은 함수를 쓰기 그것이 함수 인수가 설계된 것입니다. 또한 매개 변수를 보간하기 전에 인수의 내용을 이스케이프 할 수도 있습니다.

+0

와우, 고마워요! 이것은 정말 유용하고 내 문제를 해결했습니다. –

0

내가 문제가이 링크 variables scope

+0

'$ username','$ sql' 및'$ conexion' 변수를 정의했지만, 제 질문 코드에 포함시키지 않을 것이라고 생각했습니다. 하지만 지금은 추가했습니다. 고맙습니다. –

+0

예, 함수에는 다른 변수 * 스코프 *가 있습니다. 따라서 외부 변수를 가져 오려면 왜 global 키워드를 사용해야합니까? 왜 그냥 대신이 함수를 호출하도록 작성하지 않는가? 'updateData ('password', $ password); ' – Amber

+0

AH! 나는 당신이 지금 무슨 뜻인지 이해한다고 생각합니다! 고맙습니다! 나는 그것을 시도하고 당신에게 돌아올 것입니다. –

관련 문제