2013-12-25 2 views
0

У меня есть массив, который построен на основе динамических строк, которые меняются каждый раз. Я могу опубликовать массив, но я получаю каждое поле в отдельной строке. Как я могу вставить массив в одну строку. Вот мой PHP:массив из столбца в одну строку mysql

<?php 

include_once 'dbconnect.php'; 

if (isset($_POST['item_name'])) { 
     $table = $_POST['ItemTypeSelect']; 
     $array = array(); 
     foreach ($_POST as $key => $variable) { 
      $chesckColumn = mysql_query("SELECT `$key` from $table"); 
      if (!$chesckColumn) { 
       echo "column ".$key." does not exist <br/>"; 
      }else{ 
       $results = $variable; 
       $columnName = $key; 
       $array[$columnName] = $results; 
       mysql_query("INSERT INTO $table (`$columnName`) VALUES ('$results') ")or die(mysql_error()); 

      } 
     } 
       print_r($array); 
     } 


?> 

Массив печати:

Array 
(
    [Server_id] => 
    [Server_IP_Address] => 123456789 
    [Server_IP2] => 123456789 
    [Server_Name] => Server 
) 

Любая помощь приветствуется.

ответ

1
$table = $_POST['ItemTypeSelect']; 
$isert_vals = "VALUES("; 
$insert_table = "INSERT INTO `".$table."` ("; 
foreach ($_POST as $key => $variable) { 
    $chesckColumn = mysql_query("SELECT `$key` from $table"); 
    if (!$chesckColumn) { 
     echo "column ".$key." does not exist <br/>"; 
    } else { 
     $results = $variable; 
     $columnName = $key; 
     $array[$columnName] = $results; 
     $insert_table.="`".$columnName."`,"; 
     $isert_vals.="'".$results."',"; 
    } 
}  
$isert_vals = substr($isert_vals , 0 ,-1).") ";  
$insert_table = substr($insert_table , 0 ,-1).") "; 

$query = $insert_table.$isert_vals; 
mysql_query($query); 
+0

Это сработало отлично ... Спасибо за ваш вклад. – BEBO

+0

Добро пожаловать! – Farkhad

0

Что-то вроде этого следует сделать трюк:

if (isset($_POST['item_name'])) { 
    $table = mysql_real_escape_string($_POST['ItemTypeSelect']); 
    $array = array(); 
    $cols = array(); 
    $vals = array(); 
    foreach ($_POST as $key => $variable) { 
     $key = mysql_real_escape_string($key); 
     $variable = mysql_real_escape_string($variable); 
     $chesckColumn = mysql_query("SELECT `$key` from $table"); 
     if (!$chesckColumn) { 
      echo "column ".$key." does not exist <br/>"; 
     } else { 
      $cols[] = $key; 
      $vals[] = $variable; 
     } 
    } 

    $columns = implode(",", $cols); 
    $values = implode("," , $vals); 
    mysql_query("INSERT INTO $table ($columns) VALUES ($values)") or die(mysql_error()); 
} 

Имейте в виду, что расширение MySQL является устаревшим. Рассмотрим использование mysqli или PDO. Обратите внимание, что вы всегда должны дезинформировать ввод базы данных, чтобы предотвратить SQL-инъекции.

0

Вам нужно построить один оператор INSERT, а не выполнять новый каждый раз, когда вы проходите через свой цикл.

Также обратите внимание, что функции mysql_ *: устарели - вместо этого вы должны использовать PDO или MySQLi.

Наконец, вы широко открыты для атак SQL-инъекций. Используйте подготовленные заявления или всевозможные очень плохие вещи будут происходить с вашей базой данных, приложением, сервером, тостером и собакой.

+0

Спасибо Эд, я смог его решить благодаря @Farkhad. каждый говорит мне, чтобы я держался подальше от mysql и изучал MySQLi - я только начал изучать mysql и не уверен, куда указывать, чтобы переключить внимание на MySQLi. – BEBO

+0

В руководстве на php.net есть много хорошей информации о MySQLi. Хорошей новостью является то, что большинство функций и логики аналогичны функциям mysql_ *, но гораздо более гибкие (например, хорошая поддержка OOP) и гораздо более безопасные, если вы используете их правильно. –

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