![](/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.