2011-08-19 2 views
0

오류가 발생합니다 : 아래의 쿼리를 사용할 때 'Time'열이 null 일 수 없습니다. 처음에는 복제가 없지만 다시 업데이트하려고 할 때 잘 동작합니다. 오류를 얻을 : 열 '시간'나는이 새로운 오전으로 MySQL 오류 : 'Time'열이 null 일 수 없습니다.

mysql_query(" 
    INSERT INTO 
    $table(Username, Time, Videos, Credits) 
    VALUES 
    ('$user', '$time', '$videos', '$credits') 
    ON DUPLICATE KEY UPDATE 
    Time=Time+INTERVAL $time SECOND 
    Videos=Videos+'$videos', 
    Credits=Credits+'$credits' 
    ", 
    $conn 
    ); 

당신이 내 오류를 발견 할 수 있습니다 희망 null 일 수 없습니다, 감사합니다!

여기 내 코드의 좀 더있다 :

$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD); 
mysql_select_db(DB_NAME, $conn); 

// Error checking 
if(!$conn) { 
    die('Could not connect ' . mysql_error()); 
} 

// Localize the GET variables 
$user = isset($_GET['username']) ? $_GET['username'] : ""; 
$time = isset($_GET['time']) ? $_GET['time'] : ""; 
$videos = isset($_GET['videos']) ? $_GET['videos'] : ""; 
$credits = isset($_GET['credits']) ? $_GET['credits'] : ""; 

// Protect against sql injections 
$user = mysql_real_escape_string($user); 
$time = mysql_real_escape_string($time); 
$videos = mysql_real_escape_string($videos); 
    $credits = mysql_real_escape_string($credits); 
    $secret = mysql_real_escape_string($secret); 

// Insert 
$retval = mysql_query(" 
    INSERT INTO 
    $table(Username, Time, Videos, Credits) 
    VALUES 
    ('$user', '$time', '$videos', '$credits') 
    ON DUPLICATE KEY UPDATE 
    Time = DATE_ADD(IFNULL(Time,now()),INTERVAL '$time' SECOND), 
    Videos = Videos+'$videos', 
    Credits = Credits+'$credits' 
    ", 
    $conn 
    ); 
    // End Query 


if($retval) { 
    echo "Success! Updated $user with Time: $time - Videos: $videos - Credits: $credits"; 
} else { 
    echo "<b>ERROR:</b><br>" . mysql_error(); 
} 

mysql_close($conn); 

답변

0

그것은해야한다 :

mysql_query(" 
INSERT INTO 
$table(Username, `Time`, Videos, Credits) 
VALUES 
('$user', '$time', '$videos', '$credits') 
ON DUPLICATE KEY UPDATE 
Time = DATE_ADD(IFNULL(`Time`,now()),INTERVAL '$time' SECOND) 
,Videos = Videos+'$videos' 
,Credits = Credits+'$credits' 
", 
$conn 
); 

그렇지 않으면 mysql_real_escape_string당신을 보호하지 것, 모든 변수를 주입 주위에 따옴표를 넣어하는 것을 잊지 마십시오.

참조 : http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

+0

이렇게하면 다음과 같은 오류 메시지가 나타납니다. 'SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. '비디오 ='비디오 + '100', 신용 = 크레딧 + '200' '줄 7에서 – Daniel

+0

뒤에 콤마가 누락 됨 –

+0

분실 콤마, 고정. – Johan

0

는이 쿼리가 삽입을 할 것, 중복이없는 경우, 그리고 값이 이제까지 설정되어 있지되었을 때 Time 값은 null이됩니다. Null + anything은 null이므로 오류가 발생합니다.

... Time = COALESCE(Time, 0) + INTERVAL $time SECOND 또는 그와 비슷한 것을 사용해보십시오.

+0


내가 시간 = 유착 '와 같은 오류 ('열 '시간'null' 수 없습니다)를 얻을 수 (시간, 0) + 간격 $ 시간 실제 쿼리 문자열은 무엇입니까 '초 – Daniel

+0

당신은 모든 PHP 변수가 삽입 된 것처럼 보이는 모습을하고 있습니까? –

+0

업데이트 된 질문 – Daniel

관련 문제