2011-03-28 4 views
1
$dotheactvity = $db->db_exec("INSERT INTO activity (notification, by, on, extra, extra2) VALUES ('$nou', '$nome', '$tehtime', '$herpdederp', '$id2')"); 

어떤 이유로 든이 쿼리는 경고없이 그냥 실패합니다. 다른 모든 것은 작동하지만이 줄은 작동하지 않습니다. 내가 확인하고 모든 변수가 존재합니다. 로그에서 아무것도 찾을 수없는 것 같습니다.MySQL INSERT INTO가 오류없이 자동으로 실패합니다.

(내 주장을 명명 내 미성숙 실례)

+1

표시 할 수 있습니까? $ db -이게 뭐야? 제 3 자 구성 요소입니까? 마지막 SQL 오류를 검색 할 수있는 메소드가 있어야합니다. – heximal

답변

5

byonMySQL reserved words이다.

back-tick으로 묶습니다.

+0

아하. 고맙습니다. 나는 그것들을'안에 넣어야한다, 맞지? 아니면 테이블의 값을 바꾸어야합니까? – iamandrus

+0

백틱으로 묶어두면 이름을 변경할 필요가 없습니다. – codaddict

0

일반적으로 나는 쿼리 문자열을 먼저 변수에 넣고 디버깅을 위해 그것을 반향시킵니다. 오류를 쉽게 찾아 낼 수 있습니다. 쿼리를 복사하여 붙여 넣거나 mysql 콘솔이나 phpmyadmin 쿼리 콘솔에서 실행할 수도 있습니다. 거기에서 오류를 알려줍니다.

$sql = "INSERT INTO activity (notification, by, on, extra, extra2) VALUES ('$nou', '$nome', '$tehtime', '$herpdederp', '$id2')"; 
echo $sql; 
1

이 시도 :이 작업을하는 이유

$sql = "INSERT INTO activity (notification, by, on, extra, extra2) VALUES ('".$nou."', '".$nome."', '".$tehtime."', '".$herpdederp."', '".$id2."')"; 

가능한 이유는 당신의 가치는 인용 부호로 묶어야합니다 문자열 값이 될 수 있다는 것입니다. MySQL은 당신의 SQL을 읽을 때

그래서, 그것은 다음과 같이 표시됩니다

INSERT INTO activity (notification, by, on, extra, extra2) VALUES ('val1', 'val2', 'val3', 'val4', 'val5'); 


당신은 당신의 SQL 문의는

echo $sql; 

또는

print_r($sql); 
을 사용하여 서식을 확인하실 수 있습니다

또는

var_dump($sql) 
+1

https://xkcd.com/327/ –