插入和删除方法

时间:2013-11-03 14:46:35

标签: php mysql

你好,这是我今天处理PHP oop功能的第二篇文章。我已经创建了(在stackoverflow的帮助下)使用该函数与数据库的简单连接,现在我需要创建两个简单的'Insert'和'Delete'函数。我知道这看起来好像我要求你为我做这项工作,并且不要指望答案会从你们中间的某个人那里落到我身上,但是我还有一些帮助,无论去哪里,做什么就像我一样刚触及oop,这些功能对我来说就像地狱一样,实际上我刚刚启动了PHP整体。我将介绍我认为功能应该布局的方式,但我不知道该放在那里,如果你们中的任何人能够向我展示至少其中一个,那么我可能知道下一步该去哪里。谢谢。

到目前为止我的文件(带注释):

   <?php

   require_once(dirname(__FILE__) . 'cfg.php');

   class Database {

   private $dbConn; //stores the database connection

public function __construct($dbConn)
{
    global $cfg;
    mysqli_connect($cfg['db']['host'], $cfg['db']['user'], $cfg['db']['pass'])
    or die('Could not connect to MySQL server.');
    mysqli_select_db($dbConn, $cfg['db']['db'])
    or die('Unable to select database: ');

}

public function insert($parameters) 
  { 
      //construct INSERT INTO (...) VALUES 

      // construct the inserted record(s) (...) 

      //run the query 

       //$result = get the number of rows affected 

     return $result; 
 } 
 }

如果你们中的任何一个人可以指导我展示插入功能应该进入的内容,那么它可以工作我然后可以继续做我的下一个声明,如“删除”和“选择”/提前谢谢你,我希望你能以某种方式帮助我。

编辑:迄今为止的工作:       

  require_once(dirname(__FILE__) . '\cfg.php');

  class Database {

  private $dbConn;

public function __construct()
{
    global $cfg;

    $this->dbConn = new mysqli($cfg['db']['host'], $cfg['db']['user'], $cfg['db']['pass'], $cfg['db']['db']);

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

}

public function select($parameters){

    $fields = implode(',',$parameters['fields']);
    //divides the fields array in to what is included in there(name and surname colums in this table)

    $table = $parameters['table'];
    //Takes the table

    $sql_query = $this->dbConn->query("
    SELECT $fields FROM $table WHERE id <> 0
    ");
    //takes the query from mysqli (contains a lot of functions)

    $sql_result = mysqli_fetch_assoc($sql_query);

    return $sql_result;
}
public function insert($parameters)
{
    $fields = implode(',',$parameters['fields']);
    $values = implode(',',$parameters['$values']);

    //divides the fields array in to what is included in there(name and surname colums in this table)

    $table = $parameters['table'];
    //Takes the table

   $sql_query = $this->dbConn->query("
    INSERT INTO $table ($fields) VALUES ('$values')
    ");
        //construct INSERT INTO (...) VALUES // construct the inserted rerd(s) (...),  //run the query

    $result = $this->dbConn->affected_rows;
    //$result = get the number of rows affecte
    return $result;


    //DOES NOT ADD VALUES TO THE TABLE ANYMORE MiSITAKE !!!!!!!!!!!!!!!!!!!!!!!
    //PROBABLY IN THE  $values = implode(',',$parameters['$values']); !~~~!!!!!!!!!!!!!!!!!!11


}
编辑:我在插入功能中犯了一些错误。它不会从我创建的表单中将参数保存到数据库中。我认为问题在于               $ values = implode(',',$ parameters ['$ values']);     将继续努力。如果有人有任何想法将是非常有用的。

2 个答案:

答案 0 :(得分:0)

这是为了让您了解通用功能

<?php

 // @param array $dataArray[field] = value
 // @param string $tabla
 // @return string

function insert(array $dataArray, $tabla) {
  $insertStr = 'INSER INTRO ' . $tabla;
  $row  = 'VALUES' . $field = '(';
  foreach ($dataArray as $index => $value) {
    $field .= '`' . $index . '`,';
    $row   .= (is_string($value )) ? "'" . $value . "'," : $value . ',';
  }
  $field =  trim($field, ',') . ')';
  $row   =  trim($row, ',') . ')';
  $sql = $insertStr . $field . $row;
 return $sql;
}

答案 1 :(得分:0)

  • 向insert函数添加另一个参数:表的名称。
  • 第二个参数($ parameters)应该是一个双数组:

$parameters = array(
    array(
        "name" => "test",
        "column2" => "toto"
    ),
    array(
        "name" => "test 2",
        "column2" => "titi"
    )
    // ...
);
  • 如果$parameters是单个数组:$parameters = array($parameters);
  • 获取这些列的名称(&#34;名称&#34;和&#34;第2列和第34页;在此示例中)。
  • 有了这个,您现在可以构建您的查询:
    INSERT INTO $table ($columns) VALUES ($array1), ($array2), ...;

请记住逃避您的数据。

  • 然后(执行,并获取行数),您可以使用MySQL函数。