![](/img/trans.png)
[英]How to Insert unknown amount of HTML form fields into MySQL via PHP?
[英]How to insert unknown amount of colums in mysql using PHP PDO
当前,我正在使用以下代码:PHP PDO Insert data
try {
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO TABLE (firstname)
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
// insert a row
$firstname = "John";
$stmt->execute();
echo "New records created successfully";
}
而且效果很好。
我的问题:我有5列,例如: tag1,tag2,tag3,tag4,tag5
这就是我从API(数组)获取值并回显它们的方法
for ($i=0;$i<count($response["tag"]);$i++ )
{
echo " ".$response["tag"][$i]["name"]." ";
}
现在,如果该数组仅发送2个标记值(即: ["tag"][0]["name"] and ["tag"][1]["name"]
然后我只想在tag1 & tag2 columns
插入值
但是看起来我不能在插入数据代码中使用forloop。 我需要一些帮助。
如果没有标准化的数据,则数据库中可以有一个TEXT
类型列,当您从API serialize array
接收数据或encode to JSON
并将其保存在数据库中时。
如果这是您必须执行的操作(而不是标准化),则类似
$data = [];
$binds = [];
for ($i=0;$i<count($response["tag"]);$i++ )
{
//echo " ".$response["tag"][$i]["name"]." ";
$columns[] = "tag".$i;
$binds[] = ":tag".$i;
}
$sql = 'insert into tableName ('.implode(',',$columns).')'.
' values ('.implode(',',$binds).')';
echo $sql;
$stmt = $conn->prepare($sql);
for ($i=0;$i<count($response["tag"]);$i++ ) {
$stmt->bindParam($binds[i], $response["tag"][i]["name"]);
}
第一个foreach生成一个sql语句,例如
insert into tableName (tag0,tag1) values (:tag0,:tag1)
(调整数据库的表名等)。 第二个foreach绑定语句中每个占位符传入的值。
我尝试了这个并且工作了。 但不确定是否是个好主意。
try {
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO TABLE (firstname,tag1,tag2,tag3,tag4,tag5)
VALUES (:firstname,:tag1,:tag2,:tag3,:tag4,:tag5)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':tag1', $tag1);
$stmt->bindParam(':tag2', $tag2);
$stmt->bindParam(':tag3', $tag3);
$stmt->bindParam(':tag4', $tag4);
$stmt->bindParam(':tag5', $tag5);
// insert a row
$firstname = "John";
if ( ($response["tag"][0]["name"]) != "" )
$tag1= "".$response["tag"][0]["name"]."";
if ( ($response["tag"][1]["name"]) != "" )
$tag2= "".$response["tag"][1]["name"]."";
if ( ($response["tag"][2]["name"]) != "" )
$tag3= "".$response["tag"][2]["name"]."";
if ( ($response["tag"][3]["name"]) != "" )
$tag4= "".$response["tag"][3]["name"]."";
if ( ($response["tag"][4]["name"]) != "" )
$tag5= "".$response["tag"][4]["name"]."";
$stmt->execute();
echo "New records created successfully";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.