seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Почему не выполняется prepare() в PDO в зависимости от типа окружения сервиса?

Доброго времени суток!

Я реализовал механизм динамического подключения к БД(пример его кода на Pastebin), который на основе данных параметров подключения учитывается тип сервера(Боевой или локальный), благодаря возможностям PDO.
При тестировании на локальном сервере, используя правильные параметры для локального сервера, компилятор выдал ошибку:
Fatal error: Uncaught Error: Call to a member function prepare() on null in /var/www/.../portalServices/1/send.php on line 145
, ссылаясь на проблемный фрагмент кода:
$galleryList = function($service){
			
			$readyData = [];
			
			if($service == 'content'){
				$param = [];
				
				$contentData = explode(' - ',  str_replace(['\n'], "", $data['content']));
				
				for($i = 0; $i < count($contentData); $i++){ $param[] = [$contentData[$i] => $contentData[$i + 1]]; }
				
				$readyData = $param;
			}
			
			return $readyData;
		};
		
		$paramData = $galleryList('content');
		
		$contentQuery = [
				'meta' => [
					'description' => $data['description'],
					'region' => [
						'country' => $data['objectCountry'],
						'region' => $data['objectRegion']
					]
				],
				'content' => [
					'parameters' => $paramData,
					'cost' => $data['objectCost']
				]
		];
		
		$metaTitle = $data['objectTitle'];
		$metaCategory = $data['objectAttribute'];
		
		$jsonContent = $contentQuery;
		
		
		$queryParam = [
			't' => $metaTitle,
			'c' => $metaCategory,
			'j' => json_encode($jsonContent),
			'user' => $_COOKIE['portalId']
		];
		$query = 'INSERT INTO objectData (title, category, content, creator) VALUES(:t, :c, :j, :user)';
		$queryTRUE = $database->prepare($query);
		
		return $queryTRUE->execute($queryParam) ? ['message' => 'The object has been successfully added to the portal!'] : ['message' => 'The registration of this object failed'];

Что в механизме не так? Как решить данную проблему подключения к БД с помощью prepare()? Заранее вам спасибо!
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
toxa82
@toxa82
Причем тут prepare(). У вас проблема с подключением у БД. Код не может подключиться и в переменной $database получается null вместо объекта PDO. Проверяйте параметры коннекта. Хост database точно валидный? Вы его прописывали в hosts? Включите отображение ошибок, для PDO тоже.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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