現在、私はこのコードを使用しています: 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 を使用できないようです。ここで助けが必要です。
これが(正規化とは対照的に)あなたがしなければならない方法である場合、次のようなもの
$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)
(データベースのテーブル名などを調整してください)。2 番目の foreach は、ステートメント内の各プレースホルダーで渡された値をバインドします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加