javascript - PHP PDO 循环在 JS 和 PHP 中不同

标签 javascript php ajax pdo

我正在尝试创建一个循环以将所有 POST 键添加到 PDO 绑定(bind)参数。 当我用 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 请求,对吗?

最佳答案

PDO 文档未能解释的是 bindParam() 通过引用传递给 PDO - 而 bindValue() 则不然。

在这种情况下最好使用bindValue()bindParam() 旨在执行查询,然后更改变量并重新执行,而无需再次绑定(bind)参数。 bindValue() 立即绑定(bind),bindParam() 仅在执行时

&$value 是对 $value 的引用,而不是它的值

关于javascript - PHP PDO 循环在 JS 和 PHP 中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496867/

相关文章:

javascript - node.js 中的 process.exec()

javascript - 页面加载时自动提交表单

asp.net - 如何保护我的通用处理程序调用?

javascript - 将 `toDataURL` 图像保存到服务器

javascript - 如何在vuejs中获取选择选项名称属性

javascript - 使用 Jquery 选择一个 td 元素

javascript - 使 Div 在可滚动溢出中聚焦并可见

php - 如何将 SQL Server 与 Yii2 连接

带有直接链接的 PHP 帖子

php - 如何从返回 3 维数组的查询中获取数据并在 symfony 3 中的 Twig View 上设置值