你好,这是我今天处理我的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 = 内爆(',',$parameters['$values']); 将在这方面做更多工作。如果有人有任何想法,会很有帮助。
这是为了给你一个通用函数的概念
<?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;
}
- 在插入函数中添加另一个参数:表的名称。
- 我认为第二个参数($parameters)应该是一个双数组:
$parameters = array(
array(
"name" => "test",
"column2" => "toto"
),
array(
"name" => "test 2",
"column2" => "titi"
)
// ...
);
- 如果
$parameters
是单个数组:$parameters = array($parameters);
。 - 获取这些列的名称(在此示例中为"名称"和"列 2")。
- 有了这个,您现在可以构造您的查询:
INSERT INTO $table ($columns) VALUES ($array1), ($array2), ...;
.
请记住转义您的数据。
- 然后(执行并获取行数),您可以使用函数MySQL。