gpt4 book ai didi

php - PDO 从 foreach 语句中插入 1 而不是值

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:42 25 4
gpt4 key购买 nike

我有一个表单,可以将一堆数据发布到这个将插入数据库的脚本:

帖子是:

$_POST['fName'] = "bob";
$_POST['lName'] = "Jones";
$_POST['smsNum'] = "12345";
$_POST['pass1'] = "1234567890";
$_POST['company'] = "acme";
$_POST['uName'] = "bjones";
$_POST['perms'] = "user";
$_POST['active'] = "1";

我的插入语句:

$ins = "INSERT into login (firstName,lastName,SMSNumber,password,company,userName,permissions,active) VALUES (:fName,:lName,:smsNum,:pass1,:company,:uName,:perms,:active)";

如果我这样做:

$stmt->bindParam(':fName',$_POST['fName']);
$stmt->bindParam(':lName',$_POST['lName']);
$stmt->bindParam(':smsNum',$_POST['smsNum']);
$stmt->bindParam(':pass1',$_POST['pass1']);
$stmt->bindParam(':company',$_POST['company']);
$stmt->bindParam(':uName',$_POST['uName']);
$stmt->bindParam(':perms',$_POST['perms']);
$stmt->bindParam(':active',$_POST['active']);

它工作正常。

如果我这样做:

foreach($_POST as $k => $v)
{
$stmt->bindParam(":".$k,$v);
}

结果是将数字“1”插入到数据库中的每个字段中。有什么想法吗?

最佳答案

使用 bindParam() 您声明 PDO 应该为所有参数使用变量 $v。因此,当执行该语句时,它将使用来自 foreach 循环的最后一次迭代的值。

您必须执行以下操作之一:

$stmt->bindParam(":".$k,$_POST[$k]);

这将告诉 PDO 使用来自 $_POST 变量的值。

或者:

$stmt->bindValue(":".$k,$v);

这将在循环的当前迭代中使用 $v 中的实际值。

关于php - PDO 从 foreach 语句中插入 1 而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24333378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com