2014-01-13 2 views
0

안녕하세요, 저는 MySQL 테이블에 데이터를 삽입하기위한 모듈을 작성하고 있습니다. 그것은 아주 쉽다 그러나 나의 단위에서 나는 4 개의 이동할 수있는 수를 받고있다. 첫 번째는 사용자의 모바일 번호이며 다른 세 개는 참조 번호입니다. 사용자의 모바일 번호는 필수 입력란이지만 참조 번호는 없습니다. 이번에는 isset()empty() 함수를 사용하여 각 참조 모바일을 PHP에서 확인하고 있습니다. 하지만 여러 if-else 블록을 작성해야합니다. likemysql 삽입 쿼리를위한 최적화 된 코드

if(isset($_POST['mobileno_1']) && !empty($_POST['mobileno_1'])){ 
     $mobileno1 = $_POST['mobileno_1']; 
    }else{ 
     $mobileno1 = 0; 
    } 
    if(isset($_POST['mobileno_2']) && !empty($_POST['mobileno_2'])){ 
     $mobileno2 = $_POST['mobileno_2']; 
    }else{ 
     $mobileno2 = 0; 
    } 
    if(isset($_POST['mobileno_3']) && !empty($_POST['mobileno_3'])){ 
     $mobileno3 = $_POST['mobileno_3']; 
    }else{ 
     $mobileno3 = 0; 
    } 
    $sql = "INSERT INTO refferencemobile(mobileno, mobile1, mobile2, mobile3) VALUES($mobileno, $mobileno1, $mobileno2, $mobileno3)"; 

이 모든 최적화 된 방법으로이 블록을 줄일 수 있습니다. 아마도 이런

답변

1

뭔가 :

$mobileno3 = (isset($_POST['mobileno_3']) && !empty($_POST['mobileno_3'])) 
    ? $_POST['mobileno_3'] 
    : 0; 

당신은 심지어 함수로 설정할 수 있습니다.

function GetMobileNo($mobileNo) 
{ 
    return (isset($mobileNo) && !empty($mobileNo)) ? $mobileNo : 0; 
} 

$mobileno3 = GetMobileNo($_POST['mobileno_3']); 
2

empty은 변수가 이미 설정되어 있는지 확인하여 if 구문을 단순화합니다.

세 가지 조건을 사용할 수도 있습니다. 그렇지 않으면 'A'$someCondition가 사실이고 경우 'B'로 평가됩니다

$someCondition ? 'a' : 'b'; 

: 이들은처럼 보인다. user1281385가 직접 쿼리에 게시 된 값을 사용하고있는 의견에서 지적

//If $_POST['mobileno_1'] isset and has a non false value use $_POST['mobileno_1'] 
    $mobileno1 = !empty($_POST['mobileno_1']) ? $_POST['mobileno_1'] : 0; 
    $mobileno2 = !empty($_POST['mobileno_2']) ? $_POST['mobileno_2'] : 0; 
    $mobileno3 = !empty($_POST['mobileno_3']) ? $_POST['mobileno_3'] : 0; 

으로 :

우리가 얻을 이것을 함께 할 수 퍼팅. 이것들이 위생적으로 처리되었는지, 또는 더 나아가 준비된 진술을 사용하는지 확인해야합니다.

+0

일뿐만 아니라 안전 쿼리 문자열을 mobileno_1 2와 3를 확인해야합니다. – exussum

0

샘플/테스트 여기에 코드 http://codepad.org/5ybUcmcN

$mobileno1 = getMobileNo($_POST['mobileno_1']); 
$mobileno2 = getMobileNo($_POST['mobileno_2']); 
$mobileno3 = getMobileNo($_POST['mobileno_3']); 

/* example 
$mobileno1 = getMobileNo('abc'); 
$mobileno2 = getMobileNo('111'); 
$mobileno3 = getMobileNo(''); 
*/ 

$sql = "INSERT INTO refferencemobile(mobileno, mobile1, mobile2, mobile3) VALUES($mobileno, $mobileno1, $mobileno2, $mobileno3)"; 

function getMobileNo($mobileNo){ 

    // check for if its set or not OR empty OR not an integer 
    if(!isset($mobileNo) || empty($mobileNo) || !is_int($mobileNo)){ 
     return 0; 
    } 

    return $mobileNo; // valid number 
} 
+1

나는 is_int보다는 ctype_digit를 사용할 것이고, is_int는 post vars가 문자열이기 때문에 항상 실패 할 것입니다. – exussum

+0

감사합니다. 저에게 새로운 것도 있습니다. – codepiper

+0

소수점과 과학 표기법을 허용하기 때문에 is_numeric도 피하십시오. – exussum