【发布时间】:2016-12-23 09:30:39
【问题描述】:
我在这里有一个通过 Ajax POST 传递的数组:
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=a@gmail.com&sec_question_uuid=1a78e916f8a2affa1d1de00be7e41f91&sec_answer=a&civil_status=32899cec496b4b25c43c8c4444f24403-married&gender=male&command=signup
)
这是将其发送到 php 文件的 ajax:
$.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.'" )');
【问题讨论】:
-
目前发生了什么?您的插入已被注释掉,看起来它还会生成无效且不安全的 SQL。
-
您应该从
mysql_*切换,因为它已被 officially 弃用。使用mysqli_*或PDO 与 prepared statements。 -
$_POST['[name_dependents]']应该是$_POST['name_dependents'] -
我试图先回应它,以确保我得到的数据是正确的。但它没有显示任何东西。我只是在做
print_r($_POST);时看到数据 -
在修复数组访问之后,您将需要引用那些 SQL 字符串。这也会让你接触到 SQL 注入。 (我也没有看到分配到任何地方的那些变量)
标签: php jquery mysql ajax foreach