我有一个JSON字符串从JS / AJAX进入PHP文件。条目数是动态的,范围从6到30。
我按照以下方式填充数组
$myarray = array();
$dataLength= count($decodedJSON['make'][0]['model'][0]['color']);
for ($x = 0; $x < $dataLength*2; $x+=2) {
$myarray[$x] = $decodedJSON['make'][0]['model'][0]['color'][$x/2]['int'];
$myarray[$x+1] = $decodedJSON['make'][0]['model'][0]['color'][$x/2]['ext'];
}
for ($x = $dataLength*2; $x < 30; $x++) {
$myarray[$x] = 0;
}
所以这基本上给了我一个用零填充的数组,前面有我的数据。
现在,我想将其插入到具有最大列数
的SQL表中$sql = "INSERT INTO cars VALUES ( '$dataLength', '$myarray[0]', '$myarray[1]', '$myarray[2]', '$myarray[3]', '$myarray[4]', '$myarray[5]', '$myarray[6]', '$myarray[7]', '$myarray[8]', '$myarray[9]', '$myarray[10]', '$myarray[11]', '$myarray[12]', '$myarray[13]', '$myarray[14]', '$myarray[15]', '$myarray[16]', '$myarray[17]', '$myarray[18]', '$myarray[19]', '$myarray[20]', '$myarray[21]', '$myarray[22]', '$myarray[23]', '$myarray[24]', '$myarray[25]', '$myarray[26]', '$myarray[27]', '$myarray[28]', '$myarray[29]', 42)";
但我认为必须有更好的方法???
感谢您的帮助, HSC。
答案 0 :(得分:0)
为什么在声明时不用数字填充数组;然后你可以保存最后一个循环:
$myarray =array_fill(0,30,0);
答案 1 :(得分:0)
如果你使用的是PDO
,你可以这么简单:
try {
$pdo = new PDO('mysql:host=' . $host . ';dbname=' . $database, $user, $pass, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
}catch(PDOException $e) {
echo 'Could not connect to database: ' . $e->getMessage();
exit;
}
$sql = 'INSERT INTO cars VALUES ('.implode(',',array_fill(0,30,'?')).')';
$values = array_fill(0,30, null);
/** populate array with data here ... **/
$stmt = $pdo->prepare($sql);
try {
$stmt->execute($values);
}catch(PDOException $e) {
die($e->getMessage());
}
这里的旁注,如果您可以确定执行插入需要哪些列会更好,您可以更改JSON以使列与值匹配。通过这种方式,您可以防止始终必须定义30列的开销,并且您可以为列分配默认值