2

そのため、配列をMySQLテーブルに入れるのに問題があります。私の目標は、配列から 1 つの要素をテーブルの 1 つの行に配置することですが、それは起こりません。

$cnt = count($array);
for($i = 0; $i < $cnt; $i++)
    {
    mysql_query("
        INSERT INTO $groupname (id, name) 
        VALUES('', '".$array[$i]."')
        ", $conn1); 
    }

(IDは自動インクリメントです)

これにより、配列の最初の要素がテーブルの最初の行に配置され、2 番目の要素が 2 番目の行に配置されることを期待していました。代わりに、私のテーブルは次のようになります

+----+-------+
| id | name  |
+----+-------+
|  1 | Array |
+----+-------+

配列を取得しているだけで、全体を最初の行に配置していると想定しています。どうすればそれを防ぐことができますか? 行ごとに 1 つの要素を行うにはどうすればよいですか?

編集ここにvar_dumpがあります

array(1) { [0]=> array(5) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" } } 

テスト目的で、配列の各要素に0〜4の数字を昇順で入れただけです

4

3 に答える 3

0

指摘すべき点がいくつかあります。

挿入する id 値を呼び出さないでください。

それ自体が配列のように見える$array[$i]ので、正しい値を使用していることを確認してください。

挿入クエリを作成し、一度だけ挿入する必要があります (以下の例を参照)。

$query = 'INSERT INTO ' . $groupname . ' (name) VALUES ';
foreach($array as $item) {
    $query .= "('". $item['name'] . "'),"; // 'name' or whatever proper item in multidimensional array is.
}
$query = rtrim($query, ',');
mysql_query($query, $conn);

これらは非推奨であるため、mysqli_*代わりに関数の使用を検討する必要があります。mysql_*

クエリにエラー処理を追加する必要があります (つまり、クエリが機能しないケースを処理し、エラー メッセージを表示します。

于 2012-12-19T21:56:50.803 に答える
0

あなたのコードは有効です。しかし、 $array は実際には、最初のレベルで 1 つのキーを含む多次元配列のようです。おそらくvar_dump($array) 、ループの直前に試して、その内容を確認してください。

または、ブラインド for on$array[0]を試して$array[0][$i]から、ループに入れます。ブラインドコーディングは決して良いことではありませんが。

于 2012-12-19T21:45:12.360 に答える
0

次のようなことを意図していたと思います。

VALUES('', '".$array[$i]['name']."')"

配列を mysql に直接挿入することはできません。代わりに、それぞれの値を挿入する必要があります。

于 2012-12-19T21:46:07.450 に答える