你好,这是我今天处理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']);
将继续努力。如果有人有任何想法将是非常有用的。
答案 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)
$parameters = array(
array(
"name" => "test",
"column2" => "toto"
),
array(
"name" => "test 2",
"column2" => "titi"
)
// ...
);
$parameters
是单个数组:$parameters = array($parameters);
。INSERT INTO $table ($columns) VALUES ($array1), ($array2), ...;
。 请记住逃避您的数据。