php数组到SQL

php数组到SQL,php,sql,arrays,Php,Sql,Arrays,$sql=“插入数据(id、num、name)值('53'、'20'、'aaa')、('10'、'20'、'bbb')” 如何将$array转换为('53'、'20'、'aaa')、('10'、'20'、'bbb') 谢谢可以帮助您做到这一点,但您需要循环并将其应用于每个阵列: $array = array ( 53 => array('num' => 20,'name' => 'aaa'), 10 => a

$sql=“插入数据(id、num、name)值
('53'、'20'、'aaa')、('10'、'20'、'bbb')

如何将$array转换为
('53'、'20'、'aaa')、('10'、'20'、'bbb')

谢谢

可以帮助您做到这一点,但您需要循环并将其应用于每个阵列:

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

我会使用一个预先准备好的语句和一个简单的循环来实现这一点,例如

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

 $result = implode($resultStrings, ",");

使用foreach循环它们:

$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();
}

et voilá

内爆($array,“,”)
->
内爆($subarray,“,”)
谢谢,抱歉,在我发布之前错过了那个。刚刚更新了我的答案。我喜欢第二次内爆!不过,请注意,海报也需要阵列的钥匙。您需要将$array循环为$key=>$子数组,并在内爆子数组之前连接该键非常正确!伙计,我提交的时候不在上面。再次编辑。这不是每个数组执行一次吗?我将避免对数据库的任何超出严格要求的往返。这将对每个外部数组元素的DB产生一次影响,但是语句已经准备好,因此绑定值/参数的通信量会减少,并且DB已经解析了SQL语句。它可能归结为6 |半打/一或其他场景,但这种方法是众所周知的模式,与MySQL insert语句的复合值相比,它在DB平台上是兼容的。@Justin更不用说使用参数绑定的好处了。
$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);