Пожалуйста, пожалуйста, сделайте немного больше обучения, прежде чем пытаться построить эту вещь.
Вы можете сделать это так, как вы это делаете, но только с небольшим дополнительным знанием о ОО-программировании, и, возможно, о классах Pearl db у вас будет 3x более чистый код.
Если вы действительно не хотите, по крайней мере, извлекать каждую из ваших процедур сохранения, обновления, удаления и т. Д. В функции, а не просто вставлять их в свой код. поместите их в отдельный файл и включите в эту страницу.
Это может быть бесполезно для вас, но я собираюсь вывести здесь общий класс доступа к таблице для вас. Для этого требуется простой API класса DB, но если вы используете это или что-то подобное, ваша жизнь будет в 5 раз проще.
Если вы не понимаете этот код, когда смотрите на него, это нормально, но, пожалуйста, просто вернитесь и задайте вопросы о вещах, которые вы не понимаете. Для этого и используется stackoverflow.
Это старый класс, который должен просто делать базовые вещи. Извините, это не лучше, я просто хотел выкопать что-то из архивов для вас, что было просто.
<?php
// Subclass this class and implement the abstract functions to give access to your table
class ActiveRecordOrder
{
function ActiveRecordOrder()
{
}
//Abstract function should return the table column names excluding PK
function getDataFields()
{}
//Abstract function should return the primary key column (usually an int)
function getKeyField()
{}
//abstract function just return the table name from the DB table
function getTableName()
{}
/*
This function takes an array of fieldName indexed values, and loads only the
ones specified by the object as valid dataFields.
*/
function loadRecordWithDataFields($dataRecord)
{
$dataFields = $this->getDataFields();
$dataFields[] = $this->getKeyField();
foreach($dataFields as $fieldName)
{
$this->$fieldName = $dataRecord[$fieldName];
}
}
function getRecordsByKey($keyID, &$dbHandle)
{
$tableName = $this->getTableName();
$keyField = $this->getKeyField();
$dataFields = $this->getDataFields();
$dataFields[] = $this->getKeyField();
$results = $dbHandle->select($tableName, $dataFields, array($keyField => $keyID));
return $results;
}
function search($whereArray, &$dbHandle)
{
$tableName = $this->getTableName();
$dataFields = $this->getDataFields();
$dataFields[] = $this->getKeyField();
return $dbHandle->select($tableName, $dataFields, $whereArray);
}
/**
* Since it is *hard* to serialize classes and make sure a class def shows up
* on the other end. this function can just return the class data.
*/
function getDataFieldsInArray()
{
$dataFields = $this->getDataFields();
foreach($dataFields as $dataField)
{
$returnArray[$dataField] = $this->$dataField;
}
return $returnArray;
}
/**
* Added update support to allow to update the status
*
* @deprecated - use new function saveObject as of 8-10-2006 zak
*/
function updateObject(&$dbHandle)
{
$tableName = $this->getTableName();
$keyField = $this->getKeyField();
$dataArray = $this->getDataFieldsInArray();
$updatedRows = $dbHandle->updateRow(
$tableName,
$dataArray,
array( $keyField => $this->$keyField )
);
return $updatedRows;
}
/**
* Allows the object to be saved to the database, even if it didn't exist in the DB before.
*
* @param mixed $dbhandle
*/
function saveObject(&$dbhandle)
{
$tableName = $this->getTableName();
$keyField = $this->getKeyField();
$dataArray = $this->getDataFieldsInArray();
$updatedRows = $dbHandle->updateOrInsert(
$tableName,
$dataArray,
array( $keyField => $this->$keyField )
);
return $updatedRows;
}
}