DbSimple - библиотека, реализующая единый интерфейс доступа к разным СУБД и включает в себя некоторое количество улучшений, упрощающих работу с СУБД.
Основные возможности
- Поддержка PHP 4 и 5, СУБД: MySQL, PostgreSQL и InterBase/FireBird.
- Простой и лаконичный интерфейс (см. примеры ниже).
- Функции непосредственной выборки: всего результата, строки, столбца, ячейки, ассоциативного массива, многомерного массива, связанного дерева.
- Поддержка различных видов placeholder-ов (параметров запроса): списковый, ассоциативный, идентификаторный
- Код библиотеки весьма компактен: один файл - базовый класс, один файл - драйвер конкретной СУБД.
и многое другое!
Основным недостатком традиционного подхода является разделение операций "выполнение запроса" и "получение результата запроса". Например необходимо получить список email пользователей со статусом 2
Традиционный подход
$rusult = $mysqli->query('SELECT email FROM user WHERE status='.$status);
$email_array = array();
while ($email = $rusult->fetch_assoc()) {
$email_array = $email['email'];
}
DbSimple
$email_array = $DB->selectCol('SELECT email FROM user WHERE status=?d', $status);
'SELECT email FROM user WHERE status='.$status - уязвим для sql-иньекций, если не проверить переменую $status
'SELECT email FROM user WHERE status=?d' - ?d это как раз и есть placeholder. Вместо него подставляется $status как целое число. Нам не нужно заморачиваться с проверкой - это сделает библиотека.
Это далеко не все возможности DbSimple. Более подробно в официальной документации
p.s. Около года использую эту библиотеку. Очень доволен
Первое издание этой книги считалось одним из лучших практических руководств по программированию более 10 лет . Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО — с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство.
Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Не ограничивайте свое мышление только теми концепциями, которые непосредственно поддерживаются языком. Самые лучшие программисты думают о том, что они хотят сделать, после чего определяют, как достичь этих целей при помощи инструментов программирования, имеющихся в их распоряжении
скачать книгу (20 Mb, формат djvu)
<html>
<head>
<title>Yandex</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<?php
if(!isset($_POST['submit'])) {
echo '<form method="post" action="">
<table>
<tr><td>Сайт: </td><td> <input name="site" type="text" size="30"> </td></tr>
<tr><td>Запрос: </td><td> <input name="zapros" type="text" size="30"></td></tr>
<tr><td>Количесвто страниц: </td><td>
<input name="count" type="text" size="30" maxlength="1" value="3"></td></tr>
</table>
<input type="submit" name="submit" value="Искать">
</form>';
}
else {
$pattern = '/<span style="color:#060;">'."\n".'(www.)*'.$_POST['site'].'(.*)/i';
$zapros = rawurlencode($_POST['zapros']);
$site = $_POST['site'];
$count = $_POST['count'];
// берем каждую страницу и парсим
for($p=0; $p<$count; $p++){
$link = 'http://www.yandex.ru/yandsearch?&p='.$p.'&text='.$zapros;
$content = file_get_contents($link);
// берем содержимое отдельной страницы и парсим
if(preg_match_all($pattern,$content,$page)) {
echo '<b>'.$_POST['site'].'</b><br>'.$_POST['zapros'].'<br>';
$content = explode('<div class="title">',$content);
// находим позицию сайта
for($i=1; $i<=10; $i++) {
if(preg_match($pattern,$content[$i])) {
$poz = $p*10 + $i;
echo '<a target="_blank" href="http://'.strip_tags($page[0][0]).'">'
.strip_tags($page[0][0]).'</a><br>';
echo 'Позиция: <a href="'.$link.'" mce_href="'.$link.'" target="_blank">'.$poz.'</a>';
exit();
}
}
}
}
echo 'нету :(';
}
?>
demo: http://ekimoff.ru/ya.php
Обычно размеры файлов хранятся в байтах. Для удобного отображения можно применять следующую функцию
function bytes2readable($v, $l = 0, $precision = 2) {
$label = array(' Кб', ' Мб', ' Гб');
$val = $v / 1024;
if (floor($val) >= 1024) {
$l++;
$val = bytes2readable(floor($val), &$l);
}
return round($val, $precision).$label[$l];
}
bytes2readable(1000); // 0.98 Кб
bytes2readable(10000); // 9.77 Кб
bytes2readable(123456789); // 117.74 Мб