3

mysql データベースに挿入したい次の配列があります。

  • アイテム[0] = サッカー
  • アイテム[1] = ラグビー
  • アイテム[2] = フットボール
  • アイテム[3] = ネットボール
  • アイテム[4] = ホッケー

次の関数を使用して、functions.php にあるデータベースに挿入しています。

//Capture items 
    function item($register_data)
    {
        array_walk($register_data,'array_clean');

        $fields = ' '.implode(',',array_keys($register_data)).' ';
        $data = '\''.implode('\',\'',$register_data).'\'';

        //Insert user Data into the database
        $query = "INSERT INTO items ($fields) VALUES ($data)";
        mysql_query($query);
    }

これが私が挿入する方法です:

for($i =0;$i<4;$i++)
                {
                    $item = array($i = item[i]);        
                }


//Call the function to insert into the database
item($item);

この方法はうまくいかないようです。手伝ってください

4

2 に答える 2

1

PHP には、そのためのシリアライズおよびデシリアライズ関数 ( http://php.net/manual/en/function.serialize.php ) が組み込まれています。任意のオブジェクトまたは配列を渡すことができ、シリアル化された文字列が返され、データベースの単一のフィールドに格納できます。

于 2013-03-14T12:55:56.793 に答える
1

items テーブルには 2 つの列があり、そのうちの 1 つはid(自動インクリメント) であるため、スキップして 2 番目の列のみを指定する必要がありますItemNameこれについては、このページの mysql ドキュメントで説明されています。

このテーブルに 5 つのスポーツを挿入するとします。

$sports[0] = "Soccer";
$sports[1] = "Rugby";
$sports[2] = "Football";
$sports[3] = "Netball";
$sports[4] = "Hockey";

クエリを次の行に沿って表示する必要があります。

INSERT INTO items (ItemName) VALUES ('Soccer'), ('Rugby'), ('Football'), ('Netball'), ('Hockey');

コードは次のようになります。

function insert($insert_data)
{
    $fields = implode(', ', $insert_data);
    $data = '(\''.implode('\'), (\'', $insert_data).'\')';

    //mysql_query("INSERT INTO items (ItemName) VALUES $data;");
    echo "INSERT INTO items (ItemName) VALUES $data;";
}

$sports = array();
$sports[0] = "Soccer";
$sports[1] = "Rugby";
$sports[2] = "Football";
$sports[3] = "Netball";
$sports[4] = "Hockey";

insert($sports);

mysqlはかなり古いため、最初に文字列をサニタイズして mysqli を確認することもできます。

于 2013-03-14T13:16:19.893 に答える