Ситуация
У меня есть таблица в БД, которая содержит типы работ, в основном определяемые меткой и ценой.Я пытаюсь сделать простой SELECT * FROM jobtype
, но я не могу заставить его работать, хотя я использую один и тот же блок снова и снова в остальной части кода.Основное отличие здесь состоит в том, что это одиночный файл, пытающийся выполнить функцию.
Проблема в том, что, как только я раскомментирую строку $rs_job_types = mysql_query($query_job_types, $vtconnection) or die(mysql_error());
, страница перестанет загружаться в этой конкретной точке кода.
Код
Ниже приведен код моей функции getJobTypes()
:
require_once('Connections/vtconnection.php');
class JobTypes extends Singleton{
static private $job_types;
public static function getJobTypes(){
if (self::$job_types == null){
echo 'DEBUG: For now, $job_types is NULL.'."\n";
mysql_select_db($database_vtconnection, $vtconnection);
$query_job_types = 'SELECT * FROM jobtype';
$rs_job_types = mysql_query($query_job_types, $vtconnection) or die(mysql_error());
while ($rs_row = mysql_fetch_assoc($rs_job_types)){
// let the job type identifier in the db be its index in our array
self::$job_types[$rs_row['id']]['label'] = $rs_row['label']; // job type label
self::$job_types[$rs_row['id']]['price'] = $rs_row['price']; // job type price
}
if (self::$job_types != null) echo 'DEBUG: $job_types has been populated.'."\n";
}
return self::$job_types;
}
}
Который я так называю:
$jt = JobTypes::getJobTypes();
Вот мой шаблон синглтона:
class Singleton{
private static $instances = array();
final private function __construct(){
}
final public function __clone(){
trigger_error('You don\'t clone a singleton!', E_USER_ERROR);
}
final public static function getInstance(){
$c = get_called_class();
if(!isset(self::$instances[$c])){
self::$instances[$c] = new $c;
}
return self::$instances[$c];
}
}
Я перевернул проблему в своей голове, прокомментировал все внутри функции getJobtypes()
и не комментировал шаг за шагом.Я обнаружил, что проблема действительно возникает со строкой mysql_query()
, просто не могу понять, почему.Что-то явно не так в моем коде?
Решено
Как и предполагалось, я использовал global $vtconnection,$database_vtconnection;
в начале своей статической функции, и все прошло гладко.Это не оптимальное решение, но оно указало на проблему объема, которую я сейчас попытаюсь решить.
Я также избавился от шаблона синглтона.