Php array for sql

$array = array
        (
            53 => array('num' => 20,'name' => 'aaa'),
            10 => array('num' => 20,'name' => 'bbb')
        );

$ sql = "INSENT INTO data (id, num, name) VALUES ('53','20','aaa'),('10','20','bbb')";

How to convert $ array to ('53','20','aaa'),('10','20','bbb')?

thank

+3
source share
3 answers

implode () can help you do this, although you will need to execute a loop and apply it to each individual array:

 $resultStrings = array();
 foreach ($array as $key => $values) {
    $subarrayString = "('$key','" . implode($values, "','") . "')";
    $resultStrings[] = $subarrayString;
 }

 $result = implode($resultStrings, ",");
+3
source

I would do this using a prepared statement and a simple loop like

$db = new PDO(...);
$stmt = $db->prepare('INSERT INTO data(id, num, name) VALUES (?, ?, ?)');
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $num);
$stmt->bindParam(3, $name);

foreach ($array as $id => $vals) {
    $num = $vals['num'];
    $name = $vals['name'];
    $stmt->execute();
}
+1
source

navigate through them using foreach:

$result = '';
foreach ($array as $key=>$subarray) {
    $result .= "('$key'";
    foreach ($subarray as $el) {
        $result .= ",'$el'";
    }
    $result .= "),";
}
//get rid of the trailing comma
$result = substr($result,0,-1);

et voilรก

0
source

Source: https://habr.com/ru/post/1777373/


All Articles