【发布时间】:2016-07-29 13:20:30
【问题描述】:
我正在尝试创建一个循环以将所有 POST 键添加到 PDO 绑定参数。 当我用 JS 发出 POST 请求时,它可以工作,但是如果我用 php 完成它,我发现这并不奇怪,这里有一个例子。
这个JS
var dataString="Name="+encodeURIComponent($("#name ."+Name[i]+"").val())+"&Email="+encodeURIComponent($("#email ."+Name[i]+"").val());
$.ajax({
type: "POST",
url: "sendback.php",
data: dataString,
cache: false,
success: function(html)
{
}
});
PHP 后端。
foreach($_POST as $key => $value) {
$Value=trim(urldecode($value));
$stmt -> bindParam(':'.$key.'',$Value);
}
结果
---------------------------
Name | Email
AAA |email@exa.com
----------------------------
这可以正常工作并将数据正确存储在数据库中
然而
这个不要
$_POST['Name']="AAA";
$_POST['Email']="email@exa.com";
foreach($_POST as $key => $value) {
$Value=trim(urldecode($value));
$stmt -> bindParam(':'.$key.'',$Value);
}
$stmt -> execute();
结果
---------------------------
Name | Email
email@exa.com |email@exa.com
----------------------------
它将最后一个 $_post 键的值存储在所有数据库列中。 所以这个例子中数据库的所有输入都是“email@exa.com” 搜索后我发现要使前面的示例有效,我需要在循环中的“$value”之前添加一个“&”,这让我想知道为什么它与 Ajax 请求不同,我的意思是它们都是 POST 请求,对吧?
【问题讨论】:
-
var dataString={name1: val1, name2: val2,........} -
在什么情况下不起作用??
-
在最后一个示例中,当我尝试使用 PHP 自己制作 $POST 而不是 Ajax 请求时
-
是的,但是在什么情况下它不起作用?
-
哦,对不起,我没有提到结果。
标签: javascript php ajax pdo