php数组到SQL
$sql=“插入数据(id、num、name)值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
('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);