Когда использовать подготовленные выражения в PDO?

Печать RSS
493

А

Пришелец
0
global $db; - пора от этого избавлятся уже)
L
Автор
Землянин
0
10. rastoman, вся таблица вызывается так как в последующем будет использоваться в файле который инклудится

Добавлено через 01:13 сек.
ByKuznec (22 Сентября 2013 / 18:24)
global $db; - пора от этого избавлятся уже)
Как мне от этого избавится ? если эту строку удалить, то ничего не выйдет

Добавлено через 09:17 сек.
rastoman (22 Сентября 2013 / 18:01)
fetchColumn() или fetchColumn(0).
!== 0 это не правильно в данной ситуации. Нужно !=
]
как раз нужно !== с != не так работало, но всеравно спасибо, натолкнул на правильное решение
вот так работает:
$id = text::num($_GET['id']);
try{
    $query = $db->query("SELECT * FROM `Server` WHERE `id`='".$id."'");
    $x = $query->fetch(PDO::FETCH_ASSOC);
    if ($query->fetchColumn() !== 0){
        include_once '' . $x['type'] . '_server.php';
    }else {
        tank_msg('error', 'Сервер недоступен');
    }
}catch (PDOException $e){
    msg('error', $e->getMessage());
}
то есть сначала $x = $query->fetch(PDO::FETCH_ASSOC);, а потом $query->fetchColumn() .
если поменять местами, то не работает почему то

Чатланин
0
а вообще можно так
if($query->rowCount() >0)
{
$x = $query->fetch(PDO::FETCH_ASSOC);
include_once '' . $x['type'] . '_server.php';
L
Автор
Землянин
0
13. rastoman, дело не в том, что условие не срабатывало.
Дело в том, что если сделать так :
echo $query->rowCount();
print_r($query->fetch(PDO::FETCH_ASSOC)) ;

Выводилась только единица (это $query->rowCount()), а массив якобы пустой.

А если так:
print_r($query->fetch(PDO::FETCH_ASSOC)) ;
echo $query->rowCount();
То выводилось содержимое массива и единица.
Вот в чем загадка, лично для меня. Может кто-то знает почему так

Пришелец
0
Синглтон делать и подключать через конструктор, чтобы не использовать global $db. . . Вообще много способов
L
Автор
Землянин
0
15. Stanislav-WEB, Какие еще? Почитал про синглтон, и как то у людей двоякое мнение о нем

Пришелец
0
Он как раз для твоей задачи. Просто чтобы там нибыло. Вызывай его в конкрукторе , например protected $_db;. . . Затем конструктор . В нем this->_db = insance; и используй в классе. Во всех наследниках будет доступен. . . Домой приду скину пример
А

Пришелец
0
17. Stanislav-WEB, во-во, за ето и я имел ввиду, а то global-global уже как быдлокодинг. Хотя многие еще его используют.
L
Автор
Землянин
0
17. Stanislav-WEB, жду примера, везде пишут про вызов через статический метод

Пришелец
0
class My {

	protected $_db = null;
	
	function __construct()
	{
		if($this->_db == null) $this->_db = DBConnect::getInstance(); // обьявить синглтон c PDO коннектом который выше должен быть подключен
	
	}
	
	// Все тра ля ля
	//$this->..db-> // как объект хранящий PDO объект
}
Изменил: Станислав Крунич (24.09.2013 / 01:00)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск