更新时间:2023-01-30 16:00:57
函数pdoSet($领域,和放大器; $值$源=阵列()){
$设置='';
$值=阵列();
如果(!$源)$源=安培; $ _ POST;
的foreach($领域$场){
如果(使用isset($源[$场])){
$设置。=`.str_replace(`,``,$场)。`。 =:$场;
$值[$场] = $源[$场]
}
}
返回SUBSTR($集,0,-2);
}
此功能会产生一个正确的顺序为SET运营商,
`field1` =:FIELD1,`field2` =:场
要插入查询和avtual数据值存储在 $值
阵列的execute()
。
$栏=阵列('身份证','名','年龄','禄'); //允许的领域
$的SQL =INSERT INTO`user` SET.pdoSet($领域,$值);
$ STM = $ dbh-> prepare($的SQL);
$ STM-GT&;执行($值);
i have this array with data from a html form, and i want this array to be inserted into PHP function that handles the INSERT
query into mysql.
how can i declare my array into PDO
if (isset($_POST['submit'])); {
$_POST['name'];
$_POST['age'];
$myarray= array();
foreach ($_POST as $key => $value){
$myarray[$key] = $value;
}
whatever($myarray);
}
functions whatever($myarray) {
$sql=$db->prepare("INSERT INTO `user`(`name`, `age`) VALUES (:name,:age)");
foreach($myarray as $row=>$value){
$sql->bindValue(array($myarray)){
}
$sql->execute();
}
apology for forgetting the error.
this is what i get
Warning: PDOStatement::bindValue() expects at least 2 parameters, 1 given in C:\Web\xampp\htdocs\submit.php on line 36
Warning: PDOStatement::bindValue() expects at least 2 parameters, 1 given in C:\Web\xampp\htdocs\submit.php on line 36
Warning: PDOStatement::bindValue() expects at least 2 parameters, 1 given in C:\Web\xampp\htdocs\submit.php on line 36
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in
C:\Web\xampp\htdocs\submit.php:38 Stack trace: #0
C:\Web\xampp\htdocs\submit.php(38): PDOStatement->execute() #1
C:\Web\xampp\htdocs\submit.php(12): register(Array) #2 {main} thrown in
C:\Web\xampp\htdocs\submit.php on line 38
function pdoSet($fields, &$values, $source = array()) {
$set = '';
$values = array();
if (!$source) $source = &$_POST;
foreach ($fields as $field) {
if (isset($source[$field])) {
$set.="`".str_replace("`","``",$field)."`". "=:$field, ";
$values[$field] = $source[$field];
}
}
return substr($set, 0, -2);
}
This function will produce a correct sequence for the SET operator,
`field1`=:field1,`field2`=:field2
to be inserted into query and store avtual data values in $values
array for execute()
.
$fields = array('id','name','age','loc'); // allowed fields
$sql = "INSERT INTO `user` SET".pdoSet($fields,$values);
$stm = $dbh->prepare($sql);
$stm->execute($values);