2014-02-06 4 views
0

나는 input 상자가 많습니다. 각 입력 상자는 INT 또는 DECIMAL MySQL 필드와 연결되어 있으며 텍스트 상자 안에 표시됩니다.null/no 값으로 INT/DECIMAL 필드를 업데이트하십시오.

각 INT/DECIMAL의 기본값은 null이므로 사용자가 처음 페이지를 열면 텍스트 상자 안에 아무 것도 표시되지 않습니다.

각 입력란의 값을 존경받는 MySQL 필드로 업데이트하는 업데이트 쿼리가 있습니다.

내 문제는 각 입력 상자에 아무것도 입력하지 않으면 필드 값이 NULL에서 0으로 전환된다는 것입니다.

un-touch 된 입력을 NULL로 업데이트하는 방법을 알아내는 데 어려움을 겪고 있으며, 내 손길이 닿지 않은 값은 0으로 가지 않습니다. 아무도 도와 줄 수 있습니까?

if(nullBlank($_POST['variable1']) == false) 
    $variable1 = $_POST['variable1']; 
else 
    $variable = ""; 

나는 또한 시도했다 : : $variable = null;


내 업데이트 쿼리는 기본적으로 다음과 같습니다

mysql_query("UPDATE `table` SET `variable1`= '" . $variable1 . "' WHERE something = something 


내 변수를 정의하는 것은 기본적으로 같은 간다 내 nullBlan k() 함수

function nullBlank($data) 
{ 
    if(is_null($data)) 
     $value = true; 
    elseif(strlen($data) <= 0) 
     $value = true; 
    elseif($data === "") 
     $value = true; 
    else 
     $value = false; 

return $value; 
} 
+0

http://stackoverflow.com/questions/4054638/null -in-query-values-in-0-00-in-mysql? rq = 1 첫 번째 대답은 꽤 정확할 것으로 보인다. http://stackoverflow.com/questions/7711649/trying-to-insert -null-if-input-field-left-blank? rq = 1은 Null을 정확하게 검사하고 전달하는 코드가 있습니다. – duindain

+0

@duindain 나는 그럴 수 있다고 생각했습니다. 그러나 텍스트 상자에 입력 된 내용이 있으면이를 처리하는 방법을 확인하려면 어떻게해야합니까? 왜냐하면 내가 '1'값을 가지고 있다면 "1"을 할 필요가 없기 때문이다. SQL에 전달되는 값이 약 100입니다. – bryan

+1

SQL의 숫자 인 경우'\'variable1 \'= 1'이 좋습니다. –

답변

2

"NULL" (문자열)을 설정하십시오. 이 방법은 쿼리에서 NULL으로 끝나며 이는 SQL에서 NULL을 나타냅니다.

+0

당신은 UPDATE 문을 구조화 할 수있는 방법을 알고 있지만 정수/십진수도 허용 할 수 있습니다. 이 업데이트 문을 통해 전달되는 약 10-100 변수가 있습니다 – bryan

+0

SQL에서 따옴표로 NULL 또는 숫자가 아니므로 그대로 잘 작동합니다. 아니면 내가 열광을 얻지 않았는가? –

+1

아, SQL에서 숫자를 인용 할 필요가 없다면 문제가 해결됩니다 :) – bryan

1

는 아마도 다음 각 값에 대해이 전화

if (is_null($myVariable)) { 
    $sql .= "$columnName= NULL"; 
} else { 
    $sql .= "$columnName= '" . mysql_real_escape_string($myVariable) . "'"; 
} 

에 널 (null) 검사에 대한 코드를 변경하고 것 중 하나는 null 또는 인용 그것을

+1

+1 입력을 이스케이프 처리합니다. 실제로, @bryan은 쿼리에 SQL 인젝션 공격을 피하기 위해 사용자가 입력 한 데이터로 수행해야합니다. (당신이 준비된 진술을 사용하지 않는다면 더 좋을 것입니다. ^^) –

+0

나는 걱정하지 않아도됩니다. 그냥 개념 증명을 위해 간단하게 보관하십시오. 도와 주셔서 감사합니다 – bryan

관련 문제