Taras_Serevann
@Taras_Serevann
веб-разработчик, автор

Альтернатива get_result() в mysqli?

Здравствуйте!

Есть следующий код:
$query = $this->DB->prepare("SELECT * FROM photos WHERE id = ? AND authkey = ?");
			$query->bind_param('is', $_COOKIE['photoid'], $_COOKIE['authkey']);
			$query->execute();
			$result = $query->get_result();
		
			if ($result->num_rows != 0) {
				// user exist
				$this->userLogged = true;
				$this->userData = $result->fetch_assoc();
				return $this->userData;
			} else {
				return false;
			}


Он используется для выборки данных пользователя в виде ассоциативного массива и записи их в переменную для дальнейшего доступа.

Но возникла проблема: у моего хостера не установлен mysqlnd, поэтому нет возможности использовать get_result().

Посоветуйте, пожалуйста, альтернативу get_result(), для которой не нужен mysqlnd или расскажите как реализовать такой же код, но только без использования get_result()
  • Вопрос задан
  • 790 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. Самая удобная альтернатива - safemysql, код сократится в два раза
$sql = "SELECT * FROM photos WHERE id = ?s AND authkey = ?s";
$row = $db->getRow($sql, $_COOKIE['photoid'], $_COOKIE['authkey']);
if ($row)
{
        $this->userLogged = true;
        $this->userData = $row;
        return TRUE;
}

Но использование этой библиотеки требует некоторого опыта разработки и по этой причине она подходит не всем.

2. Менее удобная альтернатива - PDO. аргумент про "нет времени переписывать" - смехотворный.
Во-первых, надо было думать раньше, и не говнокодить функциями mysqli в коде приложения, вместо того чтобы обернуть их в класс-хелпер.
Во-вторых, не надо думать, что работа над сайтом закончена. Она только начинается. Учитывая, что в PDO одной строчкой делается то, на что в mysqli надо 10, то наоборот, при переходе выйдет огромная экономия.

3. Самый простой вариант решения проблемы - сменить хостера. Но в этом случае весь адов говнокод останется на месте.

4. Ну и самый кривой вариант - добавить больше ада и говнокода с bind_result()
Ответ написан
He11ion
@He11ion
PHP-monkey
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы