2011-10-10 3 views
0

PHP로 mySQL 데이터베이스에 NULL을 삽입하려고합니다.입력 필드가 공백 인 경우 INSERT NULL을 시도합니다.

는 내가 가지고 :

$myVariable=$_POST[inputfield];   
if(!is_numeric($myVariable) || $myVariable==0){ 

$myVariable=NULL; 
} 

내 데이터베이스 필드 소수점하고, 설정 한 NULL입니다. 공백으로두면 0.00으로 되돌립니다. 비워두면 어떻게 NULL을 설정합니까? NULL 함수 인 경우 PHP를 호출 할 수 있습니까?

편집 10 진수 NULL이 올바르지 않은 경우를 호출합니까?

<? if ($debit==NULL || $debit=="0.00") {echo 'Awaiting Cost';} 
elseif ($debit != NULL || $debit!="0.00") { echo "£$debit";}?> 

이렇게하면 내 메시지가 올바르게 표시되므로 NULL이 10 진수로 쓸모 없다면 나는 단지 0.00을 남겨 둘 것입니다. 이게 해커 야?

`myTableField` decimal(10,2) default NULL, 
+0

열 정의? – ssedano

+1

SQL 문을 보여주십시오. –

+0

SQL 또는 데이터 모델에 문제가 있습니다. 나머지 코드를 보여주십시오. –

답변

0

당신이 $myVariable 변수의 값을 추가하여 SQL 문을 작성하는 경우, 당신은 NULL인지 확인하고 이에 따라 SQL 문을 수정하십시오. 코드가있는 경우

예를 들어, 같은 :

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

는 SQL 측에서 그것을 시도 : 질문 사람들

SQL 구조

$sql = "INSERT INTO `table` (`field1`) VALUES (IF($myVariable == 0, NULL, $myVariable))"; 
0

시도 :

$sql .= "myVariable = '" . mysql_real_escape_string($myVariable) . "'"; 

는 다음과 같은 뭔가를 변경해야

$myVariable="NULL"; 

합니다.
는 코드 인 경우 : 트리거를 사용하여,

echo "SET @v=$val"; 
-1

당신은 MySQL의 자체 필드의 데이터를 필터링 할 수 있습니다

SET @v=0; 

가 사용 같다 :

$val=NULL; 
mysql_query("SET @v=$val"); 

MySQL의 문자열을 가지고 :

CREATE TRIGGER table1_update BEFORE UPDATE ON table1 FOR EACH ROW SET 
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num), 
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt); 
CREATE TRIGGER table1_create BEFORE INSERT ON table1 FOR EACH ROW SET 
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num), 
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt); 
관련 문제