我遇到了一个问题,我无法将数据插入到 atable
中,因为columns
未正确命名。它们只是 column1、column2 等。而不是 Date、Address、City 等。我没有设计这个数据库,我无法更改这些表的制作方式,所以我决定insert
在columns
第一个row
在他们之下。现在我有一个相应的数据将它们链接在一起。所以现在我正在制作array
所有列名中的一个,以及 1array
中所有值的一个,row
这样我就可以将它们组合成一个associative array
。稍后我将使用它作为我的插入语句的键。
这可能令人困惑,所以这就是我的table
样子
id | column1 | column2 | column3
1 | Date | Address | City
但是下一次它可能有更多的列,具有不同的名称,所以它看起来像这样
id | column1 | column2 | column3 | column4 | column5
1 | Apple | Orange | Tomato | Pear | Banana
现在这是我用来尝试制作的代码Associative Array
:
$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
...
这样我就可以编写一个 INSERT 将06-22-2013
(日期的答案)插入到column1
因为column1 => Date
.
如果需要更多解释,我会补充。