2010-12-06 4 views
-2

에서 예기치 않은 T_CONSTANT_ENCAPSED_STRING이 (가) 데이터베이스에 연결되었으며 배열을 아래로 당겼습니다. 이제는 입력 양식을 사용하여이 전화기의 가격을 변경합니다.PHP + mySQL 문제./home/

모든이를 제외하고 잘 작동 : 나는 모든 것을 시도했습니다

$query2 = 'UPDATE phone_models SET buyback_price=' . $data["key"] . ' WHERE id=' . $row["id"] ';'; 
mysql_query($query2) or die(mysql_error()); 

. 나는 PHP 매뉴얼을 검색했다. 나는 같은 문제가있는 사람들을 찾아 봤다. 구문을 변경했으며이를 위해 여러 가지 견적 설정을 사용했습니다. 그리고 그것은 단지 작동하지 않을 것입니다.

나는 심지어 꺼내려고했습니다. SQL 줄에. 아무것도 작동하지 않습니다.

감사합니다.

편집 : 나도이 시도했습니다

mysql_query("UPDATE phone_models SET buyback_price=" . $_POST . " WHERE id=" . $phone_id . ";") or die(mysql_error()); 

EDIT2을 : 나는 원래 코드에서 오류가 발생했습니다. 나는이에 고정했습니다

$query2 = 'UPDATE phone_models SET buyback_price=' . $data["key"] . ' WHERE id=' . $row["id"] . ';'; 
mysql_query($query2) or die(mysql_error()); 

그리고 지금, 내 오류는 다음과 같습니다 당신은 당신의 SQL 구문에 오류가 있습니다; 근처에서 사용하는 올바른 구문 MySQL 서버 버전에 해당하는 설명서를 확인 'WHERE ID = 1'여기 라인 1

답변

3

당신은 연결 연산자 (점)을 놓친에서 :

$row["id"] ';'; 

수정 :

: 당신이 당신의 문자열 값에 작은 따옴표를 추가하지 않았기 때문에

$row["id"] . ';'; 

다음으로, 당신의 SQL 오류입니다

$query2 = 'UPDATE phone_models SET buyback_price=\'' . $data["key"] . '\' WHERE id=\'' . $row["id"] . '\';'; 

이와 관련하여 SQL 주입 공격을 방지하기 위해 SQL 쿼리를 구성하기 전에 mysql_real_escape_string()을 사용하여 쿼리 변수를 이스케이프 처리해야합니다.

$data["key"] = mysql_real_escape_string($data["key"]); 
$data["key"] = mysql_real_escape_string($row["id"]); 
$query2 = 'UPDATE phone_models SET buyback_price=\'' . $data["key"] . '\' WHERE id=\'' . $row["id"] . '\';'; 
+0

으악처럼 배열 {} 사용할 수 있습니다. 나는이 코드의 마지막 버전에서 그걸 가지고 있지 않았다. 나는 그것을 고쳤다. 그러나 나는 아직도 오류를 얻고있다. 이제는 다음과 같습니다. SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문을 찾으십시오. 1 행에서 'WHERE id = 1'근처에서 사용하십시오. – Charlie

+0

트릭을 수행했습니다! 고맙습니다! – Charlie

+0

@SquireCD : 답변을 수락 한 것으로 표시하려면 왼쪽의 체크 표시를 클릭하십시오. 나는 기쁘다. – BoltClock

0
. $row["id"] ';';  
. $row["id"].';';  
0

또는이

echo "<input type='radio' name='rad' id='r{$row['num']}' value='{$row['num']}'/>" 
+0

지금 당장 배열을 가져 오는 동안 while 루프가 있습니다. echo ("
"); 이제 이것이 좋은 방법인지 확인하십시오. – Charlie