-2

您好,这是我今天处理我的 PHP oop 函数的第二篇文章。我已经(在stackoverflow的帮助下)使用该函数创建了一个与数据库的简单连接,现在我需要创建两个简单的函数“插入”和“删除”。我知道这看起来像是我在要求你为我做这项工作,不要指望你们中的任何一个人会得到我的答案,但我希望得到一些关于去哪里和做什么的帮助刚刚接触了 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']); 将在这方面工作更多。如果有人有任何想法会更有帮助。

4

2 回答 2

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;
}
于 2013-11-03T15:06:42.983 回答
0
  • 向您的插入函数添加另一个参数:表的名称。
  • 我认为第二个参数($parameters)应该是一个双数组:

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

请记住转义您的数据。

  • 然后(执行,获取行数),就可以使用 MySQL 的函数了。
于 2013-11-03T15:08:25.443 回答