2009-12-17 4 views
1

Я хочу, чтобы хранить массив в MySQL БД что-то вроде этогоPHP - Foreach как хранить массив в MySQL

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

Еогеасп

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

Позвольте мне знать, как сделать это?

обновление

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

спасибо axel для implode;) – wow

+0

no problem 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-инъекции?» – 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

Привет Алехандра. Ваш код выглядит аккуратно. Однако наилучшей практикой безопасности для SQL-использования в PHP является использование PDO и подготовленных операторов. Посмотрите на эту страницу: http://www.owasp.org/index.php/PHP_Top_5#P3:_SQL_Injection –

+0

Большое спасибо за информацию! :) –

Смежные вопросы