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

时间:2011-08-11 09:05:09

标签: php

我尝试插入一个人的细节,它已成功插入。如果我签入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 Page

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

3 个答案:

答案 0 :(得分:1)

您实际上运行了三次查询,这就是您插入三次数据的原因。只需运行一次查询就可以了。

要执行此操作,您需要更改代码:首先完整清理输入数据,然后运行查询。您当前正在挑选$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';
    }
}

答案 1 :(得分:0)

因为您使用了

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

传递给它的$vars$_POST看起来像这样。

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

所以它经历了3次$_POST个项目。 我想你可以删除验证并按照这样做。

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'; }
}

答案 2 :(得分:0)

除非我遗漏了什么,这是你想要做的吗?

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());
}