2009-12-17 13 views
1
내가

PHP - 배열

foreach ($_SESSION['order'] as $values) { 
     $item_name = $values['item-name']; 
     $item_qty = $values['item-qty']; 
     $item_price = $values['item-price']; 
    } 

나를 그렇게하는 방법을 알려이

item_row = nike,adidas,puma 
qty_row = 1,3,2 
total_row = 100,200,150 

foreach는 같은 MySQL의 DB를 무언가로 배열을 저장할

를 MySQL로 저장하는 방법을 foreach는?

갱신

foreach ($_SESSION['order'] as $values) { 
     $item_name[] = $values['item-name']; 
     $item_qty[] = $values['item-qty']; 
     $item_price[] = $values['item-price']; 
    } 

    $item_row = implode(",", $item_name); 
    $qty_row = implode(",", $item_qty); 
    $total_row = implode(",", $item_price); 
+5

여기에서하는 일은 관계형 테이블 연결의 사용을 우회하는 것입니다. 따라서 줄을서는 경우 확장 성과 속도가 필요합니다. 주문과 수량 사이에 몇 개의 연결 테이블을 만드는 것을 고려하십시오. – Kzqai

+0

감사합니다. 들여다 볼 것이다. – wow

답변

4
item_row = implode(',', $_SESSION['order']['item-name']); 
qty_row = implode(',', $_SESSION['order']['item-qty']); 
total_row = implode(',', $_SESSION['order']['item-price']); 
+1

implode에 대한 감사 axel;) – wow

+0

아무런 문제가 없습니다. Bob : –

-2
foreach ($_SESSION['order'] as $values) { 

mysql_query('INSERT INTO tablename (name, qty, price) VALUES("'.$values['item-name'].'", "'.$values['item-qty'].'", "'.$values['item-price'].'"'); 
} 
+3

이 게시물은 "SQL injections에 대해 어떻게 생각합니까?"질문에 대한 답변입니다. – mluebke

+0

공정하기 위해서는 세션은 서버 측이고 그 내용은 이미 새 니타 이징되었을 수 있습니다. P 준비된 명령문이 항상 최선이지만. –

+2

@ 루카스 ... 당신은 항상 데이터를 위생 처리합니다. 데이터베이스 자체의 데이터를 포함하여 아무 것도 안전하지 않습니다. 좀 더 복잡한 방법으로 SQL을 주입하는 확실한 방법은 사용자 입력에서 직접 오지 않았기 때문에 데이터의 일부가 안전하다고 가정하면됩니다. – TravisO

0

나는 내가 당신에 추가 할 데이터베이스에 연결 및 쿼리 실행을 관리하는 클래스를 사용하고 있습니다 :

class DbConnection 
{ 
var $ReturnQuery; 
function Connect() 
{ 
    $connection = mysql_connect("serverName", "user", "password"); 
    $DbSelect = mysql_select_db("databaseName", $connection); 
    if ($DbSelect) 
     return true; 
    else 
     return false; 
} 
function Execute($Query) 
{ 
    $ExecuteQuery = mysql_query($Query); 
    $affected = mysql_affected_rows(); 
    if ($affected != -1) 
    { 
     if ($affected != 0) 
     { 
      if ($ExecuteQuery != 1) 
      { 
       while($row=mysql_fetch_assoc($ExecuteQuery)) 
       { 
        $ResulArray[] = $row; 
       } 
       $this->ReturnQuery = $ResulArray; 
      } 
      return 1; 
     } 
     else 
     { 
      $this->ReturnQuery = ''; 
      return 0; 

     } 
    } 
    else 
    { 
     $this->ReturnQuery = ''; 
     return -1; 
    } 
} 
} 

그리고 쿼리를 실행할 인스턴스를 만들 수 있습니다 :

require_once('Includes/DbConnection.php'); 
    $this->db = new DbConnection(); 
    $this->db->Connect(); 

$query = "insert into items (item_name, item_qty, item_price) values ('".$item_name."', '".$item_qty."', '"$item_price"'); 

$query_safe = mysql_real_escape_string($query); 
$this->db->Execute($query_safe); 

나는 그것이 도움이되기를 바랍니다 !!

+0

안녕하세요 알레한드로. 코드가 멋지게 보입니다. 그러나 PHP에서 SQL을 사용하는 최상의 보안 방법은 PDO와 준비된 문을 사용하는 것입니다. 이 페이지를보십시오 : http://www.owasp.org/index.php/PHP_Top_5#P3:_SQL_Injection –

+0

정보를 제공해 주셔서 대단히 감사합니다 !! :) –