如何使用oop php概念从数据库插入数据


How to insert data from database using oops php concepts?

我尝试插入一个人的详细信息,它插入成功。如果我检查DB"相同的数据插入3次"。为什么数据插入3次?

我在数据库中有这个数据。

id      name       dob             gen
1       James     12-03-1977        M
2       James     12-03-1977        M
3       James     12-03-1977        M
PHP类
class Detail
{
function savePerson_detail($vars){
    foreach($vars as $key => $value){
       if(is_numeric($key) && $value >0){
         $qry = sprintf("INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')",
        mysql_real_escape_string($vars['name']),
        mysql_real_escape_string($vars['dob']),
        mysql_real_escape_string($vars['gen']));
        mysql_query($qry) or die(mysql_error());
         if($qry)
    {
    print 'Successfully Insert your details';
    }
   }
}
Html页面

<?php
$detail = new Detail();
if(isset($_POST['btnSaveDetail'])){
   $detail->savePerson_detail($_POST);
}?>

实际上运行了三次查询,这就是为什么要三次插入数据的原因。只需运行一次查询,应该就可以了。

要做到这一点,您需要更改代码:首先完全清理输入数据,然后运行查询。当前选取$vars的每个元素(它有三个元素),然后每次时间运行查询

一步接一步:

function savePerson_detail($vars)
{
    // validate function input
    foreach($vars as $key => $value)
    {
       if(!is_numeric($key) || !$value >0)
         return;
    }
    // build sql query
    $qry = sprintf(
        "INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')",
        mysql_real_escape_string($vars['name']),
        mysql_real_escape_string($vars['dob']),
        mysql_real_escape_string($vars['gen'])
    );
    // run sql query
    $result = mysql_query($qry) or die(mysql_error());
    // check query result
    if($result)
    {
        print 'Successfully Insert your details';
    }
}

因为你使用了

foreach($vars as $key => $value){

传递给它的$vars$_POST是这样的

$_POST['name'] = 'James';
$_POST['dob'] = '12-03-1977';
$_POST['gen'] = 'M';

所以它对每个$_POST项进行了3次。我认为你可以去掉验证,像这样做。

function savePerson_detail($vars){
  $qry = sprintf("INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')", mysql_real_escape_string($vars['name']), mysql_real_escape_string($vars['dob']), mysql_real_escape_string($vars['gen']));
  mysql_query($qry) or die(mysql_error());
  if($qry)
    { print 'Successfully Insert your details'; }
}

除非我错过了什么,否则这就是你想做的吗?

class Detail
{
function savePerson_detail($vars) {
     foreach($vars as $key => $value) {
          $vars[$key] = mysql_real_escape_string($value);
     }
     if($qry)
     {
       print 'Successfully Insert your details';
     }
   $qry = sprintf("INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')";
   mysql_query($qry) or die(mysql_error());
}