我有一個函數addIt,它將數據添加到數據庫無論是名稱或表的字段數。bindParam在foreach關閉
該函數獲取表名和字段名,並構建該命令的字符串,然後掃描來自表單的POST變量。
那麼它需要在執行前使用語句bindParams。
foreach($data as $k=>$v){
$stmt->bindParam(':'.$result[$i],$v);
$i++;
}
$ data是包含所有$ _POST變量的表。 $ result是包含所有字段名稱的表
如果title是表字段的名稱,那麼':'。result [$ i]將是':title',將被綁定到$ v(for例如$ v == $ _ POST ['title'])
foreach用於對所有變量重複相同的過程。
但我有問題,這是表中的字段獲取最後一個POST變量的值。
所以如果形式發送這些變量:$ _ POST [ '標題'],$ _ POST [ 'TEXTE'],和標題= 「你好」,texte = 「世界」
在表中的字段將採取這些值:標題=「世界」,texte =「世界」,如果你想看到完整版的類代碼
:
<?php
class add{
/*******************FUNCTION GET FIELDS**********************/
private function getFields($tbl){
try{
require 'global/connection.inc.php';
$cmd='DESCRIBE '.$tbl;
$fields=array();
$i=0;
foreach($pdo->query($cmd) as $r){
if ($r[0]!='views' && $r[0]!='votes'){
$fields[$i]=$r[0];
}
$i++;
}
return $fields;
}
catch(PDOException $e){}
}
/***********************FUNCTION GETDATA************************/
private function getData(){
$data=array();
$i=0;
foreach($_POST as $k){
$data[$i]=$k;
$i++;
}
return $data;
}
/**************************FUNCTION ADDIT************************/
function addIt($tbl){
require 'global/connection.inc.php';
try{
/*********create object add and get Fields names and POST data*****************/
$object=new add();
$result=$object->getFields($tbl);
$data=$object->getData();
/***************Build the sql command*****************************************/
$fields='';
$cmd='INSERT INTO '.$tbl;
$i=0;
foreach($result as $k=>$v){
if ($i<count($result)-1 && $i!=0){
$fields.=$v.',';
}
if ($i==count($result)-1){
$fields.=$v;
}
$i++;
}
$values='';
$i=0;
foreach($result as $k=>$v){
if ($i<count($result)-1 && $i!=0){
$values.=':'.$v.',';
}
if ($i==count($result)-1){
$values.=':'.$v;
}
$i++;
}
$cmd=$cmd.'('.$fields.')VALUES('.$values.')';
echo $cmd.'<br/>';
/**************************bind params and execute command******************************/
$stmt=$pdo->prepare($cmd);
$i=1;
foreach($data as $k=>$v){
$n=$v.'';
$stmt->bindParam(':'.$result[$i],$n); //The problem is here
$i++;
}
$stmt->execute();
}
catch(PDOException $e){echo $e->getMessage();}
}
}
預先感謝您。
將元素添加到陣列中的所有你需要做的是:$數據[] = $ K表;增量是自動的。 – John