this.afDatabase.list(`data/users/${this.currentUserID}/visits/`, ref => ref.orderByChild('type').equalTo('study')).snapshotChanges().map(changes => {
return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));})
.take(1).subscribe(data => {
let studys1 = [];
let studys2 = [];
for (let i=0; i < data.length; i++) {
studys1.push(data[i]);
for(let j=0; j < data[i].length; j++) {
console.log(data[i][j]); //This not fires. I see nothing in the console
studys2.push(data[i][j]) // Neither...
}
}
console.log('Parent Length: ' + studys1.length); // Works
console.log('Child Length: ' + studys2.length); //Always 0
});
如上所示,上述代码可以很好地将多个记录插入到表console.log('%O',data)
中,而且速度非常快。
但是,我尝试使用相同的方法在完成循环之后更新。我不知道如何实现这一点。
我想要这样的事情:
<?php
$userData = array();
while (anything to create a loop) {
$value1 = $result1_from_loop;
$value2 = $result2_from_loop;
$value3 = $result3_from_loop;
$userData[] = '("'.$value1.'", "'.$value2.'", "'.$value3.'")';
} // THIS ENDS THE WHLE OR FOR LOOP
$query = 'INSERT INTO users (data1,data2,data3) VALUES' . implode(',', $userData);
mysql_query($query);
?>
我知道上面的代码并不接近正确,语法甚至是错误的。我只是粘贴它来展示我想要实现的想法。在users
语句中,<?php
$userData = array();
while (Loop statement) {
$value1 = $result1_from_loop;
$value2 = $result2_from_loop;
$value3 = $result3_from_loop;
$userData[] = '("'.$value1.'", "'.$value2.'", "'.$value3.'")';
} // This ends the WHLE or FOR loop
$query = 'UPDATE users SET(data1,data2,data3) VALUES' . implode(',',$userData) WHERE data2=$value2
mysql_query($query);
将如何了解每个WHERE
的价值?
答案 0 :(得分:0)
UPDATE使用不同的格式来INSERT。对于UPDATE,您的代码应如下所示:
$query = 'UPDATE users SET data1 = $userData[0], data2 = $userData[1], data3 = $userData[2] WHERE data2=$value2';
虽然仅作为注释,但不建议使用mysql_query
,因为它已被弃用(并且将在以后的PHP版本中完全删除),并且您的代码易受SQL注入攻击。我建议至少使用mysqli_query
并考虑使用准备好的陈述。