【发布时间】:2014-02-04 17:13:13
【问题描述】:
我正在尝试使用 PHP 在 mysql 数据库中将数据从一个表移动到另一个表。原始表具有一对多关系中的数据。有一列包含 project_id (value_object_id - 这是多列),另一列 (value_field_id) 包含一个键,用于定义最后一列 (value_charvalue) 中存储的数据类型。我已经成功地能够使用以下代码提取所有数据,但无法弄清楚如何循环遍历每条记录以确定它是新的 project_id,在 value_field_id 列中包含 14、19 还是 20,以及如何将新记录的数据放入数组中。每条新记录都需要包含原始表中 3 条记录的信息。感谢您提供的任何帮助或指导。
<?php
$link = mysqli_connect("localhost", "username", "password", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT value_object_id, value_field_id, value_charvalue FROM custom_fields_values ORDER BY value_object_id";
$result = mysqli_query($link, $query);
// Add array for newly selected data????
// $new_array = array();
/* numeric array */
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
// Add test to determine if value_field_id is = 14, 19 or 20
// $new_array[project_id] = value_object_id
// If value_field_id = 19, $new_array[name] = value_charvalue
// If value_field_id = 14, $new_array[email] = value_charvalue
// If value_field_id = 20, $new_array[phone] = value_charvalue
$project_id = $row[0];
$next_row = $row[1];
$third_row = $row[2];
printf('%s, %s, %s \n', $project_id, $next_row, $third_row);
}
/* free result set */
mysqli_free_result($result);
/* close connection */
mysqli_close($link);
?>
【问题讨论】:
-
嗯,如果它来自来自一个表,并且需要进入另一个,那么写一个
INSERT... SELECT...查询不是更简单吗? -
我可以为每条记录使用一个 INSERT 命令,但我面临着循环遍历每一行以确定它是否包含正确数据的挑战,因为许多行不需要移动。
-
嗯,这就是
WHERE子句的用途?此外,SELECT部分中可能还有CASE语句。