这是引用此处发布的帖子:insert multiple rows via a php array into mysql
我的问题是,谁能更详细地解释一下?我不明白 $data
和 $row
是什么或做什么。
我从如下形式中提取许多变量: $Customer = $_POST['Customer'];
因此,如果有人可以展示如何使用此代码与多个变量的示例,那就太好了。
$sql = array();
foreach( $data as $row )
{
$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
最佳答案
The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable.
在此代码中,$data
是一个数组。在每次迭代中,foreach 都会将当前行的值分配给$row
。这相当于:
for($i=0;$i<sizeof($data);$i++)
{
$row = $data[$i];
//use $row however u want
}
例如:
$data[0]['text'] = 'text for category1';
$data[0]['category_id'] = '1';
$data[1]['text'] = 'text for category2';
$data[1]['category_id'] = '2';
$data[2]['text'] = 'text for category3';
$data[2]['category_id'] = '3';
使用此 $data
变量运行 foreach 后,如果使用 var_dump($row)
,您将得到如下内容:
array(3) {
[0] =>
string(25) "("text for category1", 1)"
[1] =>
string(25) "("text for category2", 2)"
[2] =>
string(25) "("text for category3", 3)"
}
最后一行将 implode这个数组创建一个有效的 mysql 查询。
PS:顺便说一下,mysql 扩展已被弃用。你应该学习mysqli - mysql improved或mysql pdo - php data objects
关于php - : insert multiple rows via a php array into mysql 的代码重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128747/