数组从post到单个mysql行

时间:2013-12-25 05:43:13

标签: php mysql arrays

我有一个基于动态行构建的数组,每次都会更改。我能够发布数组,但我将每个字段放在一个单独的行中。我如何将数组插入一行。 这是我的PHP:

<?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
)

感谢任何帮助。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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扩展。考虑使用mysqliPDO。 请注意,您应始终清理数据库输入以防止sql注入。

答案 2 :(得分:0)

你需要构建一个INSERT语句,而不是每次循环时都执行一个新语句。

另外,请注意mysql_ *函数已弃用 - 您应该使用PDO或MySQLi。

最后,您对SQL注入攻击持开放态度。使用准备好的语句,或者您的数据库,应用程序,服务器,烤面包机和狗都会遇到各种非常糟糕的事情。