2011-11-18 4 views
0

저는 약 1 년 동안 PHP를 사용하여 데이터베이스에 항목을 삽입했습니다. 갑자기 오늘 삽입이 중단됩니다. 나는 이유를 해결할 수 없다. 아무것도 (어쨌든 아는까지로!) 변경되었습니다 누군가가 잘못 해주십시오 무엇을 말해 줄 수 :PHP 데이터베이스 오류

db_functions 잘 작동
include('db_functions.php'); 
connect_to_db(); 
$query="insert into mixtable (date, djname, title, description, music, tracklist, deleted) values ('".$date."','".$djname."','".$title."','".$description."','".$music."','".$tracklist."', 0)"; 
$result=mysql_query($query); 

if(mysql_affected_rows()==1){ 
Header("Location:admin.php?op=admin&mix=added&news=null"); 
} 
else{ 
    die("there was a problem"); 
} 

, I 때문에 나는 db_functions과를 사용하여 데이터베이스 정보를 불러 다른 페이지에 이것을 알고 잘 작동합니다. 모든 변수는 테이블 항목과 동일하게 존재합니다. 제가 말했듯이, 이것은 약 1 년 동안 잘 작동하고 있습니다.

문제는 "문제가 발생했습니다"라는 오류입니다. 모든 오류를 보여 주려고 시도했지만 아무 것도 표시하지 않습니다. 나는 그것이 무엇인지 운동 할 수 없다. 어떤 아이디어?

미리 감사드립니다.

+6

오류 검사를 수행하고 있지 않습니다. 무엇이 잘못되었는지에 대해 어떻게 예상됩니까? mysql_error()와 전체 참조 : [참고 : mysql 확장을 사용하는 완벽한 코드 샘플은 무엇입니까?] (http://stackoverflow.com/q/6198104) –

+0

thanks Pekka. 나는 놈처럼 PHP 오류 검사를하고 있었다. SQL 오류 검사를 한 후에 정보에 몇 개의 아포스트로피가 있었기 때문에 문제가 발견되었습니다. 전에도 정보에 아포스트로피를 사용 했으므로 오류가 발생했습니다. 어떤 생각? – nutman

+0

그 이유는 다음과 같을 수 있습니다. http://php.net/manual/en/security.database.sql-injection.php –

답변

0

날짜가 MySQL의 현재 버전에서는 키워드이기 때문에 작은 따옴표로 "날짜"를 넣으십시오. 데이터베이스 버전 업그레이드 (아마도 4에서 5)로 인해 오류가 발생했을 수 있습니다.

0

필요한 몇 가지 사항이 있습니다.

-> 참조 아래 쿼리

"insert into mixtable (date, djname, title, description, music, tracklist, deleted) values ('{$date}','{$djname}','{$title}','{$description}','{$music}','{$tracklist}', 0)"; 

당신은 당신이 사용하지 않아도 큰 따옴표를 사용하는 "." 문자열을 추가합니다.

-> 위의 설명에서 쿼리가 실행되고 있지 않다는 것을 분명히 알 수 있습니다. 쿼리를 반향하고 SQL 편집기에서 검사하여 신속하게 디버깅 할 수 있어야합니다.

+0

당신이 완벽하게 올바른 동안 문자열을 쉽게 읽을 수 있습니다. (또한 쿼리 문자열 자체, 즉 VALUES ("dbs ($ date)."...) 내 값을 살균하는 경향이 있습니다. –

0

테이블에 자동 증가 ID가있는 경우 해당 필드에 허용되는 최대 수를 얻었습니까?