2016-04-24 1 views
1

私はまだサーバーサイドのコードについて学んでいるので、私はこの質問を持っています。これまで私は1行だけを挿入するPHPスクリプトを持っています。ここには:データベースに複数の行を挿入するPHPスクリプトを作成するにはどうすればよいですか?

<?php 

$response = array(); 

if(isset($_POST['team_full_name']) && isset($_POST['team_short_name'] && isset($_POST['league'])) 
{ 
    $team_fn = $_POST['team_full_name']; 
    $team_sn = $_POST['team_short_name']; 
    $league = $_POST['league']; 

    require_once __DIR__ . '/db_connect.php'; 

    $db = new DB_CONNECT(); 
    $result = mysql_query("INSERT INTO teamData(team_full_name, team_short_name, league) 
     VALUES('$team_fn', '$team_sn' '$league')"); 

    if($result) 
    { 
     $response["success"] = 1; 
     $response["message"] = "Team Data successfully added."; 

     echo json_encode($response); 
    } 
    else 
    { 
     $response["success"] = 0; 
     $response["message"] = "Error occurred!"; 

     echo json_encode($response); 
    } 
} 
else 
{ 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing."; 
    echo json_encode($response); 
} 

?> 

この場合、複数の行を保持する配列全体のJSON文字列がPOSTされます。複数の行を処理するようにPHPスクリプトを設定するにはどうすればよいですか?

私はJSON文字列に変換していたクラスがある:私はいくつかの重要な情報を忘れていた場合

public class TeamData 
{ 
    String mFullName; 
    String mShortName; 
    String mLeague; 

    .... 
} 

申し訳ありませんが、私はPHPやウェブサーバでの作業には完全に新たなんです。あなたが投稿をもっと鮮明にするために追加する必要があることを述べたら、投稿を編集することができます。あなたは数十キロバイトのお問い合わせ長さを維持する限り、

INSERT INTO teamData(team_full_name, team_short_name, league) VALUES 
     ('$val', '$val', '$val'), 
     ('$val', '$val', '$val'), 
     ('$val', '$val', '$val'), 
     ('$val', '$val', '$val'), 
     ('$val', '$val', '$val') 

あなたが好きなあなたは、値のように多くの行の価値を与えることができます:

+0

PHPのmysql_ *関数は非推奨であり、使用しないでください。なぜPHPのmysql_ *関数を使うべきではないのですか?](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)を読んでください。それらを何に置き換えるか。 –

答えて

2

次のような複数行INSERTクエリを記述することができます。

あなたがしている場合にも(この意志を

BEGIN TRANSACTION; 

でそれらを開始し

COMMIT; 

でそれらを終了する(あなたがやっているような)単一行挿入の束を行うことができますInnoDBを使用して)複数行挿入の速度を最大限に引き上げます。また、プログラムがクラッシュした場合でも、データベースは変更されないという甘い特質を持っています。

+0

私はこれを投稿に追加しましたが、追加するチームのサイズは固定されていないため、変更されます。私が誤解していない限り、私は行の数を指定できるとは思わない。おそらく、私のJavaプログラムによって制御されるループ内に一列の単列の挿入を行うほうが良いかもしれませんが、どうすればよいのか分かりません。したがって、BEGIN TRANSACTION 'とあなたが作った' COMMIT'ステートメントは非常に役に立ちます。 –

+0

短いメモ:「数十キロバイト」ではなく、上限はmysqlのmax_allowed_pa​​cketです。 – strangeqargo

関連する問題