2016-08-16 12 views
0

私は配列ここでのAjax POSTを通過しています。これは、PHPファイルに送信だアヤックスである右ウェイ

Array ( 
[name_dependents] => 
    Array ( 
     [0] => asd 
     [1] => hfg 
    ) 
[age_dependents] => 
    Array ( 
     [0] => 6 
     [1] => 6 
    ) 
[dob_dependents] => 
    Array ( 
    [0] => 2010-07-25 
    [1] => 2010-07-02 
) 
[dataString] => firstname=a&lastname=a&username=a&mobile_number=09176229999&password=blah&birth_month=01&birth_day=1&birth_year=1937&[email protected]&sec_question_uuid=1a78e916f8a2affa1d1de00be7e41f91&sec_answer=a&civil_status=32899cec496b4b25c43c8c4444f24403-married&gender=male&command=signup 
) 

$.ajax({ 
     type: 'POST', 
     url: 'functions.php', 
     data: {name_dependents:name_dependent_array, age_dependents:age_dependent_array, dob_dependents:dob_dependent_array, dataString:dataString}, 
     success: function() { 
      $("#message").html('success'); 
      window.setTimeout(function() { 
       $(".alert").fadeTo(1500, 0).slideUp(500, function(){ 
        $(this).remove(); 
       }); 
      }, 5000); 
     } 
     }); 

マイ問題は、私はループを作ってデータベースに挿入する作業をしていないようです。

$i = 0; 
foreach($_POST['name_dependents]'] as $name_dependent){ 
    echo $name_dependent = $name_dependent."<br />"; 
    echo $age_dependent = $_POST['age_dependent'][$i]."<br />"; 
    echo $dob_dependent = $_POST['dob_dependent'][$i]."<br />--"; 
    //$AddQuery ="INSERT INTO db (name,training,amount)VALUES ($name,$training,$amount)"; 
    //mysql_query($AddQuery, $con); 
    $i++; 
} 

私はここで何が欠けていますか?解決しよう

はあなたの鋭い目にみんなに感謝します。私は今すぐ適切なデータをエコーすることができました:

$i = 0; 
foreach($_POST['name_dependents'] as $name_dependent){ 
    echo $name_dependent = $name_dependent."<br />"; 
    echo $age_dependent = $_POST['age_dependents'][$i]."<br />"; 
    echo $dob_dependent = $_POST['dob_dependents'][$i]."<br />--"; 
    $i++; 
} 

上記のコメントのクエリは無視してください。私のコードがSQLインジェクションに脆弱であるというあなたの提案に従いますので安心してください。以下の私の作業クエリの一例は、(SQLインジェクションから、今では安全である?):

mysqli_query($conn, 'INSERT INTO pmp_user (uuid, first_name, last_name, address, email, gender, password, date_registered) VALUES ("'.md5(uniqid()).'", "'.$firstname.'", "'.$lastname.'", "'.$address.'", "'.$email.'", "'.$gender.'", "'.$password.'", "'.$date.'")'); 
+0

何が現在どうなりますか?あなたの挿入物はコメントアウトされています。また、無効で安全でないSQLを生成するようです。 – chris85

+0

[正式に](http://php.net/manual/en/migration55.deprecated.php)廃止予定であるため、あなたはmysql_ *から切り替える必要があります。 ['mysqli_ *'](http://php.net/manual/en/book.mysqli.php)または[PDO](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)***を使用してください*** [prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)。 – Script47

+4

'$ _POST ['[name_dependents]']'は '$ _POST ['name_dependents']' –

答えて

5

私はあなたが余分な[]を持っているこの行の問題

foreach($_POST['[name_dependents]'] as $name_dependent){ 

を考えます。この

foreach($_POST['name_dependents'] as $name_dependent){ 
1

を試してみてくださいあなたが簡単にあなたがそれを確認することができます。その後

$i = 0; 
foreach($_POST['name_dependents'] as $name_dependent){ 
    echo $name_dependent = $name_dependent; 
    echo "<br />".$age_dependent = $_POST['age_dependent'][$i]; 
    echo "<br />".$dob_dependent = $_POST['dob_dependent'][$i]; 
    echo ."<br />--"; 
    //$AddQuery ="INSERT INTO db (name,training,amount)VALUES ('$name','$training','$amount')"; 
    //mysql_query($con, $AddQuery); 
    $i++; 
} 

にご

$i = 0; 
foreach($_POST['[name_dependents]'] as $name_dependent){ 
    echo $name_dependent = $name_dependent."<br />"; 
    echo $age_dependent = $_POST['age_dependent'][$i]."<br />"; 
    echo $dob_dependent = $_POST['dob_dependent'][$i]."<br />--"; 
    //$AddQuery ="INSERT INTO db (name,training,amount)VALUES ($name,$training,$amount)"; 
    //mysql_query($AddQuery, $con); 
    $i++; 
} 

を交換して達成することができます:)

関連する問題