Karuppiah RK
Karuppiah RK

Reputation: 3964

execute foreach loop in PDO query

I'm trying to store serialize form data into mysql using PDO. DB table column name, field name everything is dynamic.

update.php

$data = $_POST['data'];
parse_str($_POST['data'], $searcharray);
foreach($searcharray['column_name'] as $key=>$value) {
        echo $value;
    }
foreach($searcharray['data_name'] as $k=>$v) {
        echo $v;
    }

Here this below foreach loop returns colname_1colname_2colname_3 (without comma)

foreach($searcharray['column_name'] as $key=>$value) {
            echo $value;
        }

and another foreach loop returns biketvssuzuki (without comma)

foreach($searcharray['data_name'] as $k=>$v) {
            echo $v;
        }

I want to update bike in colname_1 and tvs in colname_2 and suzuki in colname_2. How do I execute those above two foreach loops in PDO query?

try
        {
            $update_query = $dbh->prepare("UPDATE ".REQUIREMENTS_DB." SET colname_1 = ?, colname_2 = ?, colname_3 = ? WHERE id = :id");
            $update_query->bindParam(':id', $id);
            $update_query->execute();

            echo "Updated Successfully";
        }
        catch (PDOException $e) 
        {
            die('Error ' . $e->getMessage());
        }

Upvotes: 0

Views: 749

Answers (1)

puelo
puelo

Reputation: 6047

Are you looking for something like this?

$sql = "UPDATE ".REQUIREMENTS_DB." SET ";
for ($i = 0; $i < count($searcharray['column_name']); $i++) {
    $sql .= $searcharray['column_name'][$i]." = ".$searcharray['data_name'][$i];
    if ($i < (count($searcharray['column_name'])-1)) $sql .= ", "
}
$sql .= "WHERE id = :id";

$update_query = $dbh->prepare($sql);
...

This is very basic code and could/should be improved a lot.

Upvotes: 1

Related Questions