2012-11-27 10 views
-1

PHP/SQL 코드에 문제가 있습니다. 나는 많이 시도하고 인터넷 검색을했지만 코드로 어떤 실수를했는지 찾을 수 없습니다.PHP MySQL 쿼리 오류

뭔가 잘못되었는지, 여기에 내 코드를 붙여 넣습니다 수없는, 그래서 두 쿼리 오류가 여기

http://pastebin.com/P1Mur3Gv

$absentbijwerken = mysql_query("UPDATE hw_absentieregistratie SET '$currentweekandday' = '$aanwezigheid[$i]' WHERE userid = '$userid[$i]'") 
or die(mysql_error()); 
$absentredenbijwerken = mysql_query("UPDATE hw_absentiereden SET '$currentweekandday' = '$reden[$i]' WHERE userid = '$userid[$i]'") 
or die(mysql_error()); 

을 붙여.

MySQL 오류 1064 : SQL 구문에 오류가 있습니다. 구문이 근처에 '-Dinsdag ='pr '을 사용하도록 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. where userid ='1 'at 1 행에 있습니다. " SQL 구문에 오류가있어서 설명서를 확인하십시오

따옴표로 문제가 있었다 : 그 1 ''라인에서 1

EDIT '사용자 ID =' '-Dinsdag = 'XD를 근처에 사용할 수있는 권리 구문 에 MySQL 서버 버전에 해당 새 코드는 다음과 같습니다.

for ($i = 0; $i < count($userid); $i++){ 
$absentbijwerken = mysql_query("UPDATE hw_absentieregistratie SET `$currentweekandday` = '$aanwezigheid[$i]' WHERE userid = '$userid[$i]'") 
or die(mysql_error()); 
$absentredenbijwerken = mysql_query("UPDATE hw_absentiereden SET `$currentweekandday` = '$reden[$i]' WHERE userid = '$userid[$i]'") 
or die(mysql_error()); 
+0

'$ currentweekandday'가 열 이름으로 사용됩니다. 특수 문자가 들어 있으면 (적어도'-'를 가짐)', 역 인용 부호로 묶어야합니다. 'SET \'$ currentweekeandday \'= ...' –

+3

그런 식으로 SQL을 구현하지 마십시오. 심지어보고있는 것과 같은 오류가 없더라도 SQL 주입을위한 확실한 방법입니다. – geoffspear

+0

변수를 열 이름으로 보낼 때주의하십시오. 가능한 허용 값 목록과 대조하여 확인하십시오. –

답변

0

는 역 따옴표로 쿼리에서 열 이름을 묶

$absentbijwerken = mysql_query("UPDATE hw_absentieregistratie SET `$currentweekandday` = '$aanwezigheid[$i]' WHERE `userid` = '$userid[$i]'") 
or die(mysql_error()); 
$absentredenbijwerken = mysql_query("UPDATE hw_absentiereden SET `$currentweekandday` = '$reden[$i]' WHERE `userid` = '$userid[$i]'") 
or die(mysql_error()); 

그것은 $currentweekandday 위해 전달 된 값은 MySQL이 그 장소에 맞지 않는 연산자로 해석하는하는 - 포함되어 있음을 보인다.

mysql_X 메쏘드는 더 이상 사용되지 않습니다. PDO 또는 mysqli으로 전환하십시오!

+0

오류가 변경되었습니다. SQL 구문에 오류가 있습니다. 'w48-Dinsdag'= 'pr'근처에서 사용할 올바른 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 1 행의 userid = '1' ' – user1857116

+2

@ user1857116 잘못된 인용 부호를 사용했습니다. 역 따옴표가 아닌 작은 따옴표. 위의 게시물의 차이점을 확인할 수 있습니까? –

+0

왜 이것을 다운 그레이드 했습니까? – Kermit