2014-10-04 4 views
0

나는 루프하고있는 항목의 배열을 가지고 있으며, 데이터베이스에 값이 이미 있는지 검사합니다. 새로운 항목을 만들고 싶습니다. 배열의 첫 번째 항목이 표시되고 true를 반환하지만 첫 번째 항목 이후의 항목은 올바른 item_name 및 ticket_id를 가진 데이터베이스에 있다는 사실을 알고 있어도 0을 반환합니다.PHP 배열의 foreach 루프 내에서 mysql 행이 존재하는지 확인하십시오.

나는 물어보기 전에 연구를 시도했지만이 시점에서 난처한 상황에 처해있다. 사전에 도움을 주셔서 감사합니다.

if($func == 'edit') { 

     foreach ($addItem as $key => $value) { 
      if (empty($key) || $key=='amount_paid') { 
    continue; 
    } 
      $ticket_items = mysql_query("SELECT * FROM ticket_items WHERE ticket_id = '$ticket_id' AND item_name = '$key'"); 
      if (mysql_num_rows($ticket_items)) { 
       print 'Updated '. $key ."\n"; 
       mysql_query("UPDATE ticket_items set item_name='$key', item_price='$value' WHERE ticket_id='$ticket_id'"); 
      } else { 
       print 'Created '. $key ."\n"; 
      mysql_query("INSERT into ticket_items (ticket_id, item_name, item_price) VALUES ('$ticket_id', '$key', '$value')");  
      } 
     } 
} 
+0

$ ticket_id는 루프의 모든 반복에서 동일합니다. 그게 의도 된거야? – PaulJ

+0

예 어레이의 모든 항목에 동일한 ticket_id가 있습니다 – IceSteve

+0

어쩌면 건너 뜁니다. (empty ($ key) || $ key == 'amount_paid')'조건 또한 배열을 계산하십시오 – meda

답변

1

UPDATE 문에서 item_name에 관계없이 동일한 $ ticket_id가있는 모든 행을 업데이트한다는 것을 알 수 있습니다. 그것은이어야합니다 :

UPDATE ticket_items set item_name='$key', item_price='$value' WHERE ticket_id='$ticket_id' AND item_name='$key'; 
+0

간단하다. 나는 그것을 놓쳤다는 것을 믿을 수 없다. 고맙습니다! – IceSteve

1

첫 번째 업데이트 에서처럼 db의 모든 티켓에 대한 데이터가 재설정됩니다.

mysql_query ("UPDATE ticket_items set item_name = '$ key', item_price = '$ value'WHERE ticket_id = '$ ticket_id'");

위의 값은 해당 티켓의 모든 행에 대해 동일한 값으로 키와 값을 설정합니다.

아래처럼 SMT를 시도해야합니다 :

는 mysql_query를 ("UPDATE 설정 ticket_items ITEM_PRICE = '$ 값'WHERE TICKET_ID = '$의 TICKET_ID'와 ITEM_NAME의 = '$ 키'");

+0

도움 주셔서 감사합니다 ! – IceSteve

관련 문제