2013-10-17 2 views
0

저는 PHP와 mysql에 대해 매우 익숙합니다. 완전히 잘못했을 경우 용서해주세요. 인쇄 균형 응용 프로그램을 만들고 있는데 아래 코드는 그 일부입니다.라디오 버튼 값을 기준으로 데이터베이스에서 데이터 검색

$command="SELECT itemname FROM items"; 
$results = mysql_query($command); 
while($row = mysql_fetch_assoc($results)) 
{ 
    foreach ($row as $key => $value) { 
      print "<input type='radio' name='itemtype' value='$value'>".$value."</input><br />"; 
    } 
} 

여기에는 아마 사용자가 SHORT BOND PAPER 및 LONG BOND 지 (항목 중 열 itemName에) 중에서 선택 가격 인쇄 형태이다. 옵션은 라디오 단추로 나타납니다. 그것은 작동하지만 지금은 그들의 각각의 행에 삽입 된 가격을 가져올 수있는 문제에 붙어 있어요. itemname과 해당 가격은 모두 데이터베이스에 사용자가 입력했기 때문에 특정 가격을 코드 자체에 선언하지 않아야하며 데이터베이스에서 가져올 수 있어야합니다. 나중에 페이지 수를 곱하면 인쇄 가격을 계산할 필요가 있기 때문에 사용자가 제출을 클릭하면 사용자가 선택한 항목을 기반으로 가격을 얻을 수 있기를 원합니다.

나는 확실히 가능하다고 생각하지만 어떻게 확신 할 수는 없다. 이론적으로 SELECT itemprice FROM items where itemname = $ value하지만 그 방법으로는 효과가 없다고 생각합니다.


해결 방법 : 참고 자료는 다음과 같습니다. $ compute는 작동하는지 테스트하는 샘플 일 뿐이며 5는 입력 될 샘플 페이지 수입니다.

if ($command = mysql_query("SELECT `itemprice` FROM `items` WHERE `itemname` LIKE '" . mysql_escape_string($_POST['itemtype']) . "'")) 
{ 
while($row = mysql_fetch_assoc($command)) 
{ 
$compute = $row['itemprice'] * 5; 
echo $compute; 
} 
} 
else 
{ 
echo (mysql_error()); 
} 
+0

이전에 시도해 보지 않으시겠습니까? – Manolo

답변

0

실제로 그렇게 될 것입니다.

SELECT itemprice FROM items WHERE itemname = $_POST['itemtype'] 

이 항목 가격은 가격의 액면 가격이라고 가정합니다. 이런 식으로하면 코드가 mysql 인젝션에 취약해진다. 그래서 당신이 contine 전에, 조금 읽어 보시기 바랍니다.

+0

예, mysql 인젝션을 처리하는 데 필요한 물건이 있습니다. 어쨌든 "구문 분석 오류 : 예기치 않은 구문 오류 (T_ENCAPSED_AND_WHITESPACE), 식별자 (T_STRING) 또는 변수 (T_VARIABLE) 또는 숫자 (T_NUM_STRING)"가 코드에 나타납니다. 나는 해결책을 온라인으로 찾아 볼 수 있었고 그것을 고칠 수 있었다. 답장을 보내 주셔서 대단히 감사합니다. 나는 가까워지고있는 줄 알았지 만 그것을 알아 내려고 노력하면서 피곤했다. 안내가 크게 평가되었습니다 ^^ –

관련 문제