Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рабочая тетрадь(4)

.pdf
Скачиваний:
36
Добавлен:
10.02.2016
Размер:
7 Мб
Скачать
☆

MySQL

$result = mysql_query($sql);

$row = mysql_fetch_row($result);

$row = mysql_fetch_array($result, MYSQL_NUM);

PostgreSQL

$result = pg_query($sql);

$row = pg_fetch_row($result);

$row = pg_fetch_array($result, 0, PGSQL_NUM);

SQLite

$result = sqlite_query($db, $sql);

$row = sqlite_fetch_array($result, SQLITE_NUM);

MySQL, PostgreSQL, SQLite…

$db = new PDO($params['db.conn'],

$params['db.user'], $params['db.pass']);

$stmt = $db->query($sql);

$row = $stmt->fetch(PDO::FETCH_NUM);

$row = $stmt->fetch(PDO::FETCH_ASSOC);

$row = $stmt->fetch(PDO::FETCH_BOTH);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

catch(PDOException $e){

$e -> getCode() . ":". $e -> getMessage();

}

echo $db -> errorCode();

print_r($db -> errorInfo());

Лабораторная работа 3.1

Использование PDO

Упражнение 1: Базовое использование методов PDO

•В текстовом редакторе откройте файл news\NewsDB.class.php

•Внесите изменения во все методы класса (включая конструктор и деструктор), используя класс PDO и его методы: exec, query, fetch, quote

•Отследите ошибки используя класс PDOException и методы errorCode, и errorInfo класса PDO

•Обратите внимание на SQL-запрос в методе saveNews. Не забудьте про кавычки!

•Сохраните файл news\NewsDB.class.php

•Запустите браузер

•В адресной строке наберите http://mysite.local/news/news.php

•Вы не должны увидеть каких-либо изменений по сравнению с предыдущими запусками

•Если есть ошибки, найдите и исправьте их

$sql = "SELECT id, name, email FROM users";

$db = new PDO($params['db.conn'],

$params['db.user'], $params['db.pass']);

$stmt = $db->query($sql);

$obj = $stmt->fetch(PDO::FETCH_OBJ);

echo $obj -> id . "\n"; echo $obj -> name . "\n"; echo $obj -> email . "\n";

$sql = "SELECT id, name, email FROM users";

$db = new PDO($params['db.conn'],

$params['db.user'], $params['db.pass']);

$stmt = $db->query($sql);

$obj = $stmt->fetch(PDO::FETCH_LAZY);

echo $obj[0] . "\n"; echo $obj['name'] . "\n";

echo $obj -> email . "\n";

Таблица users c полями: id, name, email

1, First, a@a.ru

2, Second, b@b.ru

class Zero {public $id, $name, $email;}

$sql = "SELECT id, name, email FROM users";

$obj = $stmt->fetch(

PDO::FETCH_CLASS|PDO::FETCH_CLASSTYPE);

stdClass Object ( [name] => First [email] => a@a.ru ) // 1 row

class First {public $id, $name, $email;}

$sql = "SELECT name, email FROM users";

First Object ([id] =>NULL [name] => NULL [email] => a@a.ru ) // 1 row stdClass Object ( [email] => b@b.ru ) // 2 row

Таблица users c полями: id, name, email

1, First, a@a.ru

2, Second, b@b.ru

class Zero {public $id, $name, $email;}

$sql = "SELECT id, name, email FROM users";

$obj = $stmt->fetchObject();

stdClass Object ([id] =>1 [name] => First [email] => a@a.ru )

$obj = $stmt->fetchObject("Zero");

Zero Object ([id] =>1 [name] => First [email] => a@a.ru )

$arr = $stmt->fetchAll(); // PDO::FETCH_BOTH

class User {

public $id, $name, $email; function toUpper(){

return ucfirst($this->name);

}

}

$sql = "SELECT id, name, email FROM users";

$arr = $stmt->fetchAll(PDO::FETCH_CLASS, 'User');

foreach ($arr as $obj)

echo $obj -> toUpper();

$sql = "SELECT name, email FROM users";

$arr = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);

$arr = $stmt->fetchAll(

PDO::FETCH_COLUMN|PDO::FETCH_GROUP); $arr = $stmt->fetchAll(

PDO::FETCH_COLUMN|PDO::FETCH_UNIQUE);

function foo($name, $email){

return $name . ': '. $email . "\n");

}

$arr = $stmt->fetchAll(PDO::FETCH_FUNC, 'foo');