Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Старый запрос в новую, Делать из старого запроса новый PDO запр 
V
    Опции темы
ekodrive
  Дата 7.9.2015, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



Добрый день друзья вот имеется такой код. 
Код

class DB {
    var $result;
    function query($var){
        $this->result = mysql_query($var);
        return $this->result;
    }
    function fetchArray($result = ''){
        if($result == ''){
            $result = $this->result;
        }
        return mysql_fetch_array($result);
    }
    function numRows($result = ''){
        if($result == ''){
            $result = $this->result;
        }
        return mysql_num_rows($result);
    }
    }
$db = new DB();

хочу изменить и использовать pdo но в fetcharray функция затрудняеть ситуацию

Код

class DB {
    var $result;
    function query($var){
        $baza = new PDO('loclhost;dbname=test_host', 'test', 'password');
        $sql  = "SELECT * FROM users";
        $stmt = $baza->prepare($sql);
        $baza->exec("set names utf8");    
        $this->result = $stmt->execute();
        return $this->result;
    }
    function fetchArray($result = ''){
        if($result == ''){
            $result = $this->result;
        }
        return mysql_fetch_array($result);
    }
    function numRows($result = ''){
        if($result == ''){
            $result = $this->result;
        }
        return mysql_num_rows($result);
        }
}
$db = new DB();

--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 7.9.2015, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



А в чём проблема-то? Сохранить старый интерфейс?

Конструктор в объект добавить можно? В него и надо перенести инициализацию самого PDO.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
baldina
Дата 7.9.2015, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Код

class DB {
    private $pdo, $stmt;

    function __construct ($host, $dbname, $user, $pass) {
        $this->pdo = new PDO("mysql:host=$host;dbname=$dbname", 
                                            $user, $pass, 
                                            [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"]);
    }
    function query($sql){
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute();
    }
    function fetchArray(){
        return $this->stmt->fetchAll(PDO::FETCH_ASSOC) ;
    }
    function numRows(){
        return $this->stmt->rowCount();
    }
}

PM MAIL   Вверх
ekodrive
  Дата 8.9.2015, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



baldina,  спасибо  огромное но почему то не работает но я уверен логика есть  вот код 


classes.php
Код

class DB {
    private $pdo, $stmt;
    function __construct ($host, $dbname, $user, $pass) {
        $this->pdo = new PDO("mysql:host=$host;dbname=$dbname", 
                                            $user, $pass, 
                                            [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"]);
    }
    function query($sql){
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute();
    }
    function fetchArray(){
        return $this->stmt->fetchAll(PDO::FETCH_ASSOC) ;
    }
    function numRows(){
        return $this->stmt->rowCount();
    }
}
$db = new DB();

index.php
Код

include("data/classes.php");
$res_title = $db->query("SELECT*FROM  settings WHERE name='sitename'");
$num_title = $db->numRows();
if($num_title>0){
    $row_title = $db->fetchArray();
    $site_title = $row_title['title_'.$lg];
    $site_keywords = $row_title['keywords'];
}

--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
ekodrive
  Дата 8.9.2015, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



Все получилось проблема была 

Код

  function fetchArray(){
        return $this->stmt->fetchAll(PDO::FETCH_ASSOC) ;
    }


почему то должен быть не fetchAll а fetch.
Код

  function fetchArray(){
        return $this->stmt->fetch(PDO::FETCH_ASSOC) ;
    }


Спасибо огромное
baldina, 

Это сообщение отредактировал(а) ekodrive - 8.9.2015, 10:19
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
baldina
Дата 8.9.2015, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



ekodrive, по логике должен быть fetchAll а не fetch, просто вы его неправильно используете

Код

$db->query("SELECT*FROM  settings WHERE name='sitename'");
$rows = $db->fetchArray();
if (count($rows) > 0) {
  $row_title = $rows[0];
}
else {
  // no records
}

или
Код

$db->query("SELECT*FROM  settings WHERE name='sitename'");
foreach ($db->fetchArray() as $row)
  echo $row['keywords'];

использовать numRows сомнительно, не обязательно будет работать на select запросах (а нужен на запросах изменения)

Добавлено через 2 минуты и 50 секунд
впрочем нет, у вас в mysql_ тоже был fetch, так что вы правы

Это сообщение отредактировал(а) baldina - 8.9.2015, 10:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.