2011-09-23 5 views
0

:(PHP) 내가 같은 쿼리 할 필요가

UPDATE screening 
       SET maileddate = NOW(), 
        reference = '{$reference[$user_id]}' 
        WHERE user_id IN(....) 

을 그리고 참조 [$ USER_ID]가 비어있을 때 나는 판단을 수행하려면, 참조 [$ user_id] = NULL. 내 코드는 다음과 같습니다

if(empty($reference[$user_id]) || $reference[$user_id] == ''){ 
     $reference[$user_id] = NULL; 
    } 

을하지만 쿼리를 실행할 때, $ 기준은 [$ USER_ID] 비어, 데이터베이스의 참조의 값은 비어 있지만 null가 아닌 경우. null로 만들려면 어떻게해야합니까? 덕분에

+2

마지막 부분은 명확하지 않다. 다른 말로 할 수 있니? –

답변

0

그냥 null로 말하는 문자열로 만드십시오. 그것은이 null의 경우 $reference[$user_id] = 'null';

오, 또한 당신이 대신 등호의 reference IS null {$reference[$user_id]}를 이용해야하는 쿼리가 하나의 {$reference[$user_id]}을 가진 reference = '{$reference[$user_id]}' 함께 할 수있는 뭔가가 내 생각은, 코드의 나머지 부분을 보지 않고

+0

NULL이 아닌 데이터베이스에 문자열 값 'null'이 있습니다. –

+0

오, 그 모든 것이 바뀝니다. 다음 if 문을 null로 설정하면 'reference = {$ reference [$ user_id]}'로 유지되도록 말하십시오. – Michael

+0

기다리십시오. 이제 혼란 스럽습니다. 문자열 ' null '을 db에 넣거나 NULL을 db에 저장 하시겠습니까? – Michael

0

서명 인용 부호. MySQL은 데이터베이스에 무엇이 있어야 하는지를 알게 될 것입니다. 따라서 $reference[$user_id]이 아무 것도 출력하지 않으면 (NULL이기 때문에), 해당 비트는 reference = NULL이 아닌 reference = ''이됩니다. 쿼리에서 사용하는 변수에 대해 실제 값 NULL 대신 키워드 NULL을 사용해야합니다. 예를 들어

:

$query = "UPDATE screening " . 
      "SET maileddate = NOW(), " . 
       "reference = " . ($reference[$user_id] === NULL ? 'NULL ' : "'{$reference[$user_id]}' ") . 
       "WHERE user_id IN(....)"; 
+0

어떻게하면 좋을지 예를 들어 주시겠습니까? –

+0

내 대답을 예제로 편집했습니다 – jprofitt

-1

이 시도 :

$user_id = empty($reference[$user_id]) ? 'NULL' : $reference[$user_id]; 
$sql = "UPDATE screening 
       SET maileddate = NOW(), 
        reference = " . $user_id . " 
        WHERE user_id IN(....)"; 
+0

그러면 'reference' 열이 NULL이 아닌 빈 문자열로 설정됩니다 –

+0

이제 알았습니다. – Scoutman

2

당신은 변수가 비어있는 경우 MySQL로 문자열로 NULL을 통과해야 할 수도 있습니다. 다른 변수를 사용하여 가능한 NULL 컨텐츠를 보유하고 Null이 아닌 컨텐츠를 인용하십시오. 그렇지 않으면 탈출하는 것을 잊지 마세요 :

$refid = empty($reference['user_id']) ? "NULL" : "'" . mysql_real_escape_string($reference['user_id']) . "'"; 

UPDATE screening SET maileddate = NOW(), reference = '{$refid}' 
     WHERE user_id IN(....) 
0
$reference = 'reference = '; 
$reference .= ' empty($reference[$user_id]) ? 'NULL' : "'". mysql_real_escape_string($reference[$user_id]) . "'"; 

$query = "UPDATE screening 
     SET maileddate = NOW(), 
     $reference  
     WHERE user_id IN(....)"; 
관련 문제