Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2019, 12:44   #1
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию Переход c MySQL на PDO

Здравствуйте, осваиваю расширение PDO, но переписывать код с MySQL не все получается. Читал, что PDO работает со всеми базами . Вопрос : Таблицы в БД надо переписывать ? Подключение переписал, но выдает ошибку - ,, function prepare() on a non-object ,, Пробую запрос простейший -
Код:
$stmt = $dbh->prepare("SELECT * FROM USERS where name = ?");
 if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
не получается.
ROM710 вне форума Ответить с цитированием
Старый 11.06.2019, 12:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так кто такой $dbh? Где создается и как?
p51x вне форума Ответить с цитированием
Старый 11.06.2019, 15:31   #3
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

p51x , я так понял, что таблицы в БД переписывать не надо ?
А здесь ,, $dbh,, убрал букву ,, h,, ошибка ушла но код не работает.
Цитата:
Сообщение от p51x Посмотреть сообщение
Так кто такой $dbh? Где создается и как?
Писал от сюда - https://www.php.net/manual/ru/pdo.pr...statements.php
ROM710 вне форума Ответить с цитированием
Старый 11.06.2019, 15:33   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так вы пропустили начальные главы мануала https://www.php.net/manual/en/book.pdo.php и побежали пробовать примеры.
Соединение то создавать надо https://www.php.net/manual/en/pdo.connections.php

Цитата:
Сообщение от ROM710 Посмотреть сообщение
p51x , я так понял, что таблицы в БД переписывать не надо ?
А с чего вы взяли, что надо?
p51x вне форума Ответить с цитированием
Старый 11.06.2019, 18:01   #5
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Подключение по мануалу не работает -
Код:
$dbh = new PDO('mysql:host=localhost;dbname=урок', 'root', '');
Нашел в интернете, работает.
Код:
$dataSource = 'mysql:dbname=урок;host=localhost'; // тип СУБД, хост сервера и имя базы данных
$user = 'root';
$password = '';
$db = new PDO($dataSource, $user, $password); // Подключаемся к базе данных
Запись в бд идет с таким кодом -
Код:
$db->exec("INSERT INTO users (login, password) VALUES (" . $db->quote($login) . ", " . $db->quote($password) . ")");
А сделать проверку не получается, за два дня куча вариантов, пишет - не на объект ?
Как писать я читал - SELECT * FROM.....и т.д но сколько вариантов ! и безрезультатно, вот и подумал может что то в таблице ...... Кто ? подскажите . Это просто урок, просто хочу понять как переписывать на PDO.

Последний раз редактировалось ROM710; 11.06.2019 в 18:07.
ROM710 вне форума Ответить с цитированием
Старый 11.06.2019, 19:30   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Подключение по мануалу не работает -
А mysql на локалхосте? А база называется урок? А пользователь root с пустым паролем?

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Нашел в интернете, работает.
Так тоже самое.

У вас случаем ваш не объект не в функции?
p51x вне форума Ответить с цитированием
Старый 12.06.2019, 00:25   #7
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

root с пустым паролем - потому что Denwer. Остальное сейчас исправлю.
Цитата:
Сообщение от p51x Посмотреть сообщение
У вас случаем ваш не объект не в функции?
p51x А вот это не понял, пожалуйста по подробней.
ROM710 вне форума Ответить с цитированием
Старый 12.06.2019, 06:41   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Например, если dbh у вас глобальный. В функцию вы его не передаете и глобал не написали, то возникнет не объект...
p51x вне форума Ответить с цитированием
Старый 12.06.2019, 07:15   #9
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Ага, спасибо p51x . А подключение сколько вариантов пробовал - единственное дает запись в БЛ
Код:
$dataSource = 'mysql:dbname=yrok_pdo;host=localhost'; // тип СУБД, хост сервера и имя базы данных
$user = 'root';
$password = '';
$db = new PDO($dataSource, $user = 'root', $password = ''); // Подключаемся к базе данных
ROM710 вне форума Ответить с цитированием
Старый 12.06.2019, 10:07   #10
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Да еще есть вопрос в тему, кто знает подскажите - Сколько нужно установить драйверов для нормальной работы PDO ?
У меня на данный момент стоит 2 драйвера - PDO drivers :
Mysql поддерживает БД - MySQL 3.x/4.x/5.x
sqlite поддерживает БД - SQLite 3 и SQLite 2
ROM710 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход на другой компонент для работы с mysql Shouldercannon Общие вопросы Delphi 7 16.06.2015 23:13
Mysql+Delphi 2010 Использую libmysql.dll + mysql.pas не могу инф сохранить в базу kGpROGER БД в Delphi 7 30.12.2010 18:27
есть адреси в mysql нужно поиска с AJAX for mysql orter PHP 1 24.09.2010 10:24
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ Pblog Обсуждение статей 0 16.08.2009 16:00