2011-08-21 6 views
0

무엇이 잘못 되었나요? 구문 오류가 발생합니다. 이 코드는 일주일 전에 작동 했었고 변경되지 않았습니다.내 mysql 코드에 어떤 문제가 있습니까?

phpmyadmin에서 쿼리 자체를 시도하면 구문 오류가 발생합니다. 어떤 도움이 필요합니까?

+2

PHP 코드가 아닌 생성 된 쿼리 표시 –

+1

쿼리에 넣기 전에 변수를 이스케이프 처리합니까? 그렇지 않다면, 변수 중 하나에''를 쓰면 구문 에러 (그리고 보안 문제) – arnaud576875

답변

0

pdo::prepare 보는 것입니다

'$version', '0', '1',); 
우리는 쉼표를 포함 할 수 없습니다

예 그는의 오른쪽 마지막 필드 이후

1

마지막 값 이후에는 쉼표가 표시됩니다. 의도적입니까?

2

'$version', '0', '1',);
당신이 전혀 쿼리를 변경하지 않은 다른 사람들이 지적 쉼표 문제는 답이 아닌 경우가

1

하고 그 쉼표 무엇인가, 다음 입력을 변경해야합니다. $username$password과 같은 값은 어디서 오는가? 그들은 제대로 탈출 했습니까/살균 되었습니까? 입력이 이스케이프되지 않고 특정 값에 작은 따옴표가 있으면 구문 오류가 발생합니다 (더 중요한 것은 SQL 주입에 노출된다는 것입니다).

값이 현재 이스케이프되지 않은 경우 가장 좋은 해결책은 삽입의 각 변수에 mysql_real_escape_string()을 사용하거나 prepared statements을 사용하는 것입니다.

0

코드에 준비된 문을 사용하지 않는 것은 오류입니다.

더 안전하고 더 좋은 방법이 어디 코드 mr.robus 코드에 따라됩니다 mysqli::prepare 또는

$stmt = $mysqli->prepare("INSERT INTO `vewy`.`accountinfo` (`id`, `username`, `password`) VALUES (0, ?, ?)"); 
$stmt->bind_param('ss', $username, $password); 
$username = 'admin'; 
$password = 'stackoverflow'; 
$stmt->execute(); 
관련 문제