Php 将数组放入mysql行

Php 将数组放入mysql行,php,mysql,arrays,Php,Mysql,Arrays,您好,我有一个动态表单,可以在用户选择时更改字段名称。我希望表单结果被插入到一个mysql行中。。我创建了一个数组,如下所示: <?php include_once 'dbconnect.php'; if (isset($_POST['item_name'])) { $table = $_POST['ItemTypeSelect']; foreach ($_POST as $key => $variable) { $che

您好,我有一个动态表单,可以在用户选择时更改字段名称。我希望表单结果被插入到一个mysql行中。。我创建了一个数组,如下所示:

<?php

include_once 'dbconnect.php';

if (isset($_POST['item_name'])) {
        $table = $_POST['ItemTypeSelect'];

        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[] = array($columnName => $results);
            }
        }
                mysql_query("INSERT INTO $table (`$columnName`) VALUES ('$results') ")or die(mysql_error());

        }

?>

如何将数组插入到一个表行中,并引用$results和字段值以及$columnName作为字段值。

您可以使用一些php内置函数:

function put_quotes(&$item){
    $item = "'$item'";
}
$columns = implode(",",array_walk(array_keys($_POST),'put_quotes'));
$values = implode(",",array_walk(array_values($_POST),'put_quotes'));

mysql_query("INSERT INTO $table (columns) VALUES ($values) ")or die(mysql_error());
其中:

  • 在所有数组上执行函数,此处在项上加引号
  • 从数组中获取键
  • 从数组中获取值
  • 使用分隔符将数组连接到字符串

    • 使用PDO,因为mysql.*函数已被弃用

      连接到PDO中的MySQL

      $db="database";
      $host="127.0.0.1";
      $usr="username";
      $pass="password";
      $dbh=new PDO("mysql:dbname=$db;host=$host", $usr, $pass);
      
      首先将数组转换为JSON,并将其保存在表中:

      $json=json_encode($array);
      $sql=$dbh->prepare("INSERT INTO ? (?) VALUES (?)");
      $sql->execute(array($table,$columnName,$json));
      
      如果要检索回数组,请解码从表中获取的JSON数据:

      $sql=$dbh->prepare("SELECT ? FROM ?");
      $sql->execute(array($columnName,$table));
      while($r=$sql->fetch()){
       $array=json_decode($r[$columnName],true);
       print_r($array);
      }
      

      请尝试将数据从数组中提取到单独的变量中,然后执行插入。@I我是单独获取数据的,但只插入一个字段。好的,首先,我建议您停止使用mysql,它已经过时了。试试mysqli(MYSQL改进的扩展),它有一个漂亮的OO接口,或者PDO。更新mysql时,服务器IP和服务器IP地址为空。由于某些原因,它没有传递字段值。但是我可以看到firebug中的帖子包含了这些信息。在您的查询之后,
      mysql\u error()
      的结果是什么?此外,正如Yisera所说,使用或。mysql_*库已被弃用,不鼓励使用。谢谢,但整个网站都是mysql,我对PDO不太熟悉,因为我还在学习mysql和php
      $sql=$dbh->prepare("SELECT ? FROM ?");
      $sql->execute(array($columnName,$table));
      while($r=$sql->fetch()){
       $array=json_decode($r[$columnName],true);
       print_r($array);
      }