php - 将两个数组组合成关联数组,问题

标签 php mysql sql

我遇到了一个问题,我无法将数据插入到 table 中,因为 columns 没有正确命名。它们只是 column1、column2 等。而不是日期、地址、城市等。我没有设计这个数据库,也没有办法改变这些表的制作方式,所以我决定 insert columns 的名称在它们下面的第一个 row 中。现在我有一个相应的数据将它们链接在一起。所以现在我正在制作所有列名的 arrayrow 1 中所有值的 array 以便我可以将它们组合成一个关联数组。稍后我将使用它作为我的插入语句的键。

这可能令人困惑所以这是我的的样子

id | column1 | column2 | column3
 1 |   Date  | Address |  City

但是下一次它可以有更多列,使用不同的名称,所以它看起来像这样

id | column1 | column2 | column3 | column4 | column5 
 1 |  Apple  | Orange  | Tomato  |   Pear  | Banana

下面是我用来尝试制作我的关联数组的代码:

$col_keys = array();
$col_values = array();

$columns = "SELECT column_name FROM information_schema.columns WHERE table_name = 'mytablename'";
$columns_info = "SELECT * FROM 'mytablename' WHERE 'id' = '1'";    

if ($query_run11 = mysql_query($columns)) {
    if (mysql_num_rows($query_run11) == NULL) {             
            $response["success"] = 0;         
            echo $response;
    } else {        
        while ($row = mysql_fetch_assoc($query_run11)) {            
            $col_keys['key_name'] = $row['column_name'];                        
        }           
    } 
}

if ($query_run12 = mysql_query($columns_info)) {
    if (mysql_num_rows($query_run12) == NULL) {             
            $response["success"] = 0;         
            echo $response;
    } else {        
        while ($row = mysql_fetch_assoc($query_run12)) {            
            $col_values['value_name'] = $row['column_name']; // PROBLEM                     
        }           
    } 
}

$final = array_combine($col_keys, $col_values);
//echo '<pre>'; print_r($final); echo '</pre>

正如代码中所评论的,下面一行是一个问题。

$col_values['value_name'] = $row['column_name']; 

这是个问题,因为 'column_name' 不是列的名称。显然这就是整个问题的开始,无法知道列名是什么。它可能是第 1 列 - 第 67 列。

所以我的问题是我该怎么做?

此外,如果有更简单的方法来完成所有这一切,我会洗耳恭听。这是一个糟糕的解决方案,但这是迄今为止我能想到的最好的解决方案。

编辑

我的总体目标似乎很困惑。这是可以理解的,因为这个数据库设计很糟糕而且是一个复杂的问题。列名实际上是问题的值。它们下面的行是这些问题的答案。所以最终这就是我的目标。我将有一个看起来像这样的 Associative Array

column1 => Date
column2 => Address
column3 => City
...

这样我就可以编写一个插入 06-22-2013(日期的答案)到 column1 因为 column1 => Date.

如果需要更多解释,我会添加到这里。

最佳答案

首先,切换到PDO或者MySQLi,看大警告here ;这是 PDO 代码:

$dbh = new PDO('mysql:host=localhost;dbname=my_name', $user, $pass);
$stmt = $dbh->query($columns_info);
$result = $stmt->fetch();
$col_values = $result;

之后你可以组合它们:

$final = array_combine($col_keys, $col_values);

但是将不同类型的数据插入到同一列中……看起来是个问题。只需填充一个单独的表,如:

+------------+-------+
| column_id  |  name |
+------------+-------+

每次,用完就清除。 column_id 可以是 1,2,3... 使用 AUTO_INCREMENT

关于php - 将两个数组组合成关联数组,问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256248/

相关文章:

php - 升级到 3.0.0 后无法连接到 Cassandra

php - 如何从 php 和 mysql 数据库创建图表和最终用户前端导航

php - 如何优化以下mysql查询?

php - mysql_real_escape_string 是否足以用于非常简单的数据库插入?

php - Yii2 : Checkbox rules not working at signup for terms and conditions

MySQL WHERE IN 通配符

php - 使用 PDO 将单元格设置为变量

mysql - 计算每日平均值(或 : how many Mondays are in a date range? )

sql - 如何通过查看过去的签到时间来区分白类和夜类?

javascript - 基于百分比的值概率