2009-05-29 5 views
0

두 개의 드롭 목록을 사용하여 레코드를 추가하는 데 문제가 있습니다. URL의 세부 정보를 보유하고있는 Urls라는 테이블이 있습니다. 카테고리라는 테이블에 드롭리스트가 채워지는 경우 다른 드롭리스트를 채우는 게시자라는 테이블이 있습니다.연결된 테이블에 두 개의 드롭 목록 추가

  $query = 'INSERT INTO url_associations (url_id, url_category_id, approved, url_publisher_id) VALUES '; 
     foreach ($_POST['types'] as $v){ 
      $query .= "($uid, $v, 'Y', $k), "; 
     } 
     $query = substr ($query, 0, -2); // Chop off the last comma and space. 

     $result = @mysql_query ($query); // Run the query. 

     if (mysql_affected_rows() == count($_POST['types'])) { // Query ran OK. 

      echo '<p><b>Thank you for your submission!</b></p>'; 
      $_POST = array(); // Reset values. 

     } else { // If second query did not run OK. 

위의 코드 나 범주 목록을 드롭하여 데이터를 addd하지만 할 수 있습니다 나는 내 분석에 점점 오류를 계속 $ K로 '포스터'로 url_publisher_id을 추가 할 때. 누구든지 내가 뭘 하려는지 이해할 수 있다면 당신의 도움을 환영 할 것입니다.

답변

0

제가 추가 어레이의 foreach ($ _POST $ K 같이 포스터])를 첨가 한

// 있도록 ($ _POST [포스터] $ k) {`

완벽하게 실행되었습니다.

도움 주셔서 감사합니다. $ V 같은 카테고리 ID '유형'어떻게이 작업을 수행 할

1

$ k 변수의 값이 정수 또는 부동 소수점 이외의 값이면, 주위에 따옴표가 필요하기 때문에 오류가 발생합니다. SQL INSERT 문을 다시 빌드하십시오.

$query .= "($uid, $v, 'Y', '$k'), "; 

참고 : 예제에는 몇 가지 주요 보안 문제점이 있습니다. 이스케이프하지 않고 $ _POST의 사용자 입력을 SQL에 넣으면 사용자는 데이터베이스에서 실행하려는 모든 SQL 명령을 실행할 수 있습니다. 이

'의 foreach ($ _POST $ V 같이 타입]) 의 foreach를 판독

+0

은 감사하지만 내 문제는 $로 v.Decalres [ '유형'] 코드 $의 _POST의에서 변수 $ K 를 선언한다 url_publisher_id도 $ k와 같은 변수 'posters'와 같습니다. url_publisher_id를 포함하기 위해 줄을 추가하려했지만 성공하지 못했습니다. 이제 내 오류는 정의되지 않은 변수 k이고 잘못된 정수 값이됩니다. k 변수의 데칼레이션에 문제가 있습니다. 감사합니다. – Ddywalgi

+0

보안 문제를 강조한 데 대해 dellsala에게 감사드립니다. 더 안전한 해결책을 찾기 위해이 문제를 조사 할 것입니다. – Ddywalgi

+0

나는 당신의 질문을 이해하지 못한다고 생각합니다. "내 구문 분석에서 오류가 계속 발생합니다"라는 의미를 설명 할 수 있습니까? – dellsala