php - : insert multiple rows via a php array into mysql 的代码重写

标签 php mysql

这是引用此处发布的帖子: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));

最佳答案

来自:PHP: foreach - manual

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 improvedmysql pdo - php data objects

关于php - : insert multiple rows via a php array into mysql 的代码重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128747/

相关文章:

javascript - Iron-ajax 响应为 php json 响应返回 null

php - 使用 PHP 的 OOD 与基于功能服务的架构

php - 为 sql 表中的每一列生成输入提交

php - SQL - 按子字段重新分组

php - grocery-crud add_action如何使用pk?

php - 如何将数据库数据发送到html电子邮件

php - 将附件文件上传到另一台服务器 [Mybb]

php - 区 block 链 API 问题

javascript - 根据填充的其他输入动态生成选择输入 'required'

javascript - CodeIgniter:用于获取包括图像在内的值的 Controller