I have an array passed through Ajax POST here:
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
)
This is the ajax that's sending it to a php file:
$.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);
}
});
My problem is, I can't seem to make the loop I made work to insert them to the database:
$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++;
}
What am I missing here?
SOLVED:
Thank you guys for your keen eyes. I was able to echo the right data now:
$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++;
}
Please disregard the commented query above. Rest assured that I will follow your suggestion regarding my code being vulnerable to SQL injection. One example of my working query below(is it safe now from SQL injections?):
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.'" )');
mysql_*as it has been officially deprecated. Usemysqli_*or PDO with prepared statements.$_POST['[name_dependents]']should be$_POST['name_dependents']print_r($_POST);