Php 将数组放入mysql行
您好,我有一个动态表单,可以在用户选择时更改字段名称。我希望表单结果被插入到一个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
<?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);
}