@adrenalinruslan

Стоить ли так делать? Или все таки нет?

Я сделал такой код, стоит ли его оставлять ? Я сделал этот код, чтобы было легче и можно было достать любую запись из любой таблицы Базы Данных. Или это быдло код ?

public $dbTables 	= [
		'settings' => [
			'id', 'rucaptcha',
		],
	];

/*
	**********************************************************************************************
	**********************************************************************************************
	*/

	public function searchTableToArray($table) 
	{
		if (array_key_exists($table, $this->dbTables)) 
		{
			return true;
		}
		return false;
	}

	public function searchColumnToArray($column, $table) 
	{
		if (in_array($column, $this->dbTables[$table])) 
		{
			return true;
		}
		return false;
	}

	/*
	**********************************************************************************************
	**********************************************************************************************
	*/

public function dbGetRecordToTableByColumn($table, $column, $value) 
	{
		if (!empty($table) && !empty($column) && !empty($value)) 
		{
			if ($this->searchTableToArray($table)) 
			{
				if ($this->searchColumnToArray($column, $table)) 
				{
					$result = $this->db->row("SELECT * FROM `{$table}` WHERE `{$column}` = :{$column} LIMIT 1", [ 
						$column => $value 
					]);
					if (!empty($result)) 
					{
						return $result[0];
					}
				}
			}
		}
		return [];
	}

	public function dbGetRecordsToTableByColumn($table, $column, $value) 
	{
		if (!empty($table) && !empty($column) && !empty($value)) 
		{
			if ($this->searchTableToArray($table)) 
			{
				if ($this->searchColumnToArray($column, $table)) 
				{
					return $this->db->row("SELECT * FROM `{$table}` WHERE `{$column}` = :{$column} ORDER BY `id` DESC", [ 
						$column => $value
					]);
				}
			}
		}
		return [];
	}
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
код вполне юзабелен, не шедевр, но работать будет, хотя имхо слишком узкоспециализирован.
Кроме того - логичнее не строить клин вложенных проверок, а создавать "отсечения", типа:
public function dbGetRecordsToTableByColumn($table, $column, $value) 
  {
    if (empty($table)  || empty($column) || empty($value)) return [];
    if (!$this->searchTableToArray($table)) return [];
    if (!$this->searchColumnToArray($column, $table)) return [];
    return $this->db->row("SELECT * FROM `{$table}` WHERE `{$column}` = :{$column} ORDER BY `id` DESC", [ 
       $column => $value
     ]);
  }
Ответ написан
@morricone85
не быдлокод, но использовать не стоит

"SELECT * FROM `{$table}` WHERE `{$column}` = :{$column} ORDER BY `id` DESC",


это слишком простые запросы, на практике они будут редко использоваться;
они, не гибкие: что делать, если нужно несколько таблиц соединить, группировка данных, сортировать по разным полям и т.д.
Ответ написан
Комментировать
@T4rry
А что вот эта часть делает WHERE `{$column}` = :{$column}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы