1

の名前が​​正しくないtableため、にデータを挿入できないという問題がありました。columnsそれらは単に column1、column2 などでした。Date、Address、City などの代わりに。私はこのデータベースを設計していません。また、これらのテーブルの作成方法を変更する方法がないため、最初にinsertの名前に決めました。それらの下。これで、それらをリンクするための対応するデータが得られました。だから今、私はすべての列名の と1のすべての値の を作成しているので、それらを 1 つに結合できます。後でこれを挿入ステートメントのキーとして使用します。columnsrowarrayarrayrowassociative 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
...

06-22-2013そうすれば、(日付への回答) を挿入する INSERT を作成できcolumn1ますcolumn1 => Date

さらに説明が必要な場合は、これに追加します。

4

3 に答える 3

1

まず、PDO または MySQLi に切り替えます。ここで大きな警告を参照してください。これは 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_idAUTO_INCREMENT を使用すると 1,2,3... になる可能性があります

于 2013-06-23T00:08:17.473 に答える
1

列名はすでに配列に含まれています。

$sql = "SELECT * FROM 'mytablename' WHERE 'id' = '1'";    
$query = mysql_query($sql);
if (mysql_num_rows($query) == NULL)
{
echo 0; 
}
else
{

while ($row = mysql_fetch_assoc($query)) { 
$id=$row['id'];

// you build your out in here.

$id[$id]=$id;
$date[$id]=$row['column1'];
$address[$id]=$row['column2'];
$city[$id]=$row['column3'];


}


}

http://www.php.net/manual/en/book.pdo.php

http://uk1.php.net/manual/en/mysqlinfo.api.choosing.php

于 2013-06-22T23:48:45.923 に答える