Рабочая тетрадь(4)
.pdf
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');
