Командная строка mysql windows. Работа с MySQL из командной строки. Выбор базы данных при работе с MySQL через командную строку

В PHP часто приходится иметь дело с созданием файла...все очень просто нет файла на диске, код прогнался и файл появился, далее можно считать этот файл в другую переменную или даже любую страницу в интернете и потом что-нибудь туда записать...но для этого надо знать спец функции...об этом в этой статье...

Чтобы создать файл на php в исполняемом скрипте надо всего лишь указать несколько функций:

Рассмотрим сразу пример:

$text = "Какой-то тут текст для записи в файл";
$fp = fopen("file.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>

Тут вы должны знать :

fopen() - функция открывает файл чтения или для записи и уточнениями;

Это уточнения (параметр mode функции fopen) очень важно:

  • "r " - открыть файл в php ТОЛЬКО для чтения . Курсор помещается в начало.
  • "r+ " - открыть файл в php для чтения и для записи . Курсор помещается в начало. !!! - при этих двух режимах r и r+ файлы уже должны быть созданы(иначе вылезет ошибка Warning: fopen(file.txt) : failed to open stream: No such file or directory in ... ), а мы лишь читаем или у нас есть возможность дописывать.
  • "w " - открывается файл ТОЛЬКО для записи. Файл урезается до нулевой длины - то есть затирается. Записывается, что нужно и Курсор ставится в начало.
  • "w+ " - открывается файл для записи И ЧТЕНИЯ! Остальное то же самое что и в режиме "w". !!! - при этих двух режимах - если файл не был создан - ПРЕДПРИМЕТСЯ ПОПЫТКА ЕГО СОЗДАТЬ!
  • "a " - открыть файл ТОЛЬКО для записи. В отличие от "w" этот параметр не затирает содержимое файла, а ставит курсор в конец строки и добавляет в конец содержимое, которое мы хотели добавить.
  • "a+ " - открыть файл для записи и чтения.

fwrite ($fp, $text) - функция записи в файл на php - то есть то что находится в переменной $text записывается в файл, который находится в переменной $fp;

fclose ($fp) - функция закрытия файла, который мы записали в переменную $fp;

Все теперь вы спокойно можете создавать правильно файлы на php, открывать их для чтения и редактирования.

Полезные дополнения и функции PHP для работы с открытым файлом:

while(!feof($fp)){
$mytext = fgets($fp, 99);
echo $mytext."
";
}

здесь выполняется условие - "пока не достигнут конец файла то делай то то" while(!feof($fp))

1. Функция fgets ($fp, 99) - позволяет разделить все содержимое на участки в 99 байт и далее, чтобы это отчетливее увидеть мы помещаем тег

Эта функция string fgets (resource handle [, int length]) по умолчанию принимает в параметр length 1024 байта(1 килобайт), если не указать так и будет. Этот параметр необязателен с PHP 4.2.0 (В случае ошибки возвращает FALSE)

Доп функции для открытия, записи и создания файла

Функция - int readfile (string filename [, bool use_include_path [, resource context]]) - считываем файл как единое целое.

Читает файл и записывает содержимое в буфер вывода. И возвращает количество выведенных байт. В случае ошибки вернет, если не использована собачка - @readfile.

Что-то подобное получится:

В конце слова тег стоят
.

б. Функция - array file (string filename [, int use_include_path [, resource context]]), делает то же самое, что и функция readfile, за одним исключением она добавляет содержимое файла в массив:

Таким образом можно считывать любые странички в интернете: $lines = file("http://сайт/"); и перебрать массив через функцию foreach;

3а. Функция string file_get_contents (string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]]) - позволяет получить содержимое в виде одной строки.

Это более универсальная функция PHP для считывания файла, похожа на функцию file, только содержимое возвращается в строку, а не в массив и можно задавать условия - с какого байта начинать - offset и с какого заканчивать - maxlen . При неудаче вернет FALSE.

Важно!!! - в этом случае функция заменяет сразу 3: fopen(), fread() и fclose() и таким образом избавляет от мароки.

3б. Функция int file_put_contents (string filename, mixed data [, int flags [, resource context]]) - идентична последовательному вызову функций fopen(), fwrite() и fclose() - возвращает количество записанных байт.

Правильно работать с файлами должен уметь каждый программист. Данная статья ориентирована на начинающих PHP программистов, однако «сборник рецептов» будет полезен и продвинутым пользователям.

Работа с файлами разделяется на 3 этапа:

  1. Открытие файла.
  2. Манипуляции с данными.
  3. Закрытие файла.

I . Открытие файла

Для того чтобы открыть файл в среде PHP используется функция fopen() . Обязательными параметрами этой функции является имя файла и режим файла.

$fp = fopen("counter.txt", "r");

Согласно документации PHP выделяют следующие виды режимов файлов:

  1. r – открытие файла только для чтения.
  2. r+ - открытие файла одновременно на чтение и запись.
  3. w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.
  4. w+ - аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.
  5. a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).
  6. a+ - открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Примечание: в конце любой из строк может существовать еще один необязательный параметр: b или t . Если указан b , то файл открывается в режиме бинарного чтения/записи. Если же t , то для файла устанавливается режим трансляции перевода строки, т.е. он воспринимается как текстовый.

Для демонстрации рассмотрим следующий сценарий:

//Открывает файл в разных режимах
$fp = fopen("counter.txt", "r"); // Бинарный режим
$fp = fopen("counter.txt", "rt"); // Текстовый режим
$fp = fopen("http://www.yandex.ru", "r");// Открывает HTTP соединение на чтение
$fp = fopen("ftp://user:[email protected]", "w"); //Открываем FTP соединение с указанием логина и пароля
?>

II . Манипуляции с данными файла

Записывать данные в файл при помощи PHP можно при помощи функции fwrite() . Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

$fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи
$mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo "Данные в файл успешно занесены.";
else echo "Ошибка при записи в файл.";
fclose($fp); //Закрытие файла
?>

Для построчного считывания файла используют функцию fgets() . Функция принимает 2 обязательных параметра:


if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."
";
}
}

fclose($fp);
?>

Примечание: В данном примере значение 999 определяет количество символов, которые будут считываться до тех пор, пока указатель не достигнет конца файла (EOF).

Для того, чтобы считать файл как единое целое, нужно использовать функцию readfile() , принимающая 1 обязательный параметр. Функция открывает файл, отображает его содержимое в окне браузера, а затем закрывает файл:

echoreadfile("counter.txt");
?>

Также можно использовать функцию fpassthru() которая принимает 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным).

$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp) echo fpassthru($fp);
elseecho "Ошибка при открытии файла";
?>

Очень часто встречаются ситуации, когда необходимо содержимое сайта считать в массив. Эту возможность предусматривает использование функции file() . При вызове этой функции, каждая строка файла сохранятся в отдельном элементе указанного массива.

Примечание: Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом, где-то встретиться символ конца файла (EOF), то она не гарантирует вам чтение всего двоичного файла.

$file_array = file("counter.txt"); // Считывание файла в массив $file_array
// Работа с данными массива
?>

Примечание: Работа с массивами подробно описывается , авторы: Мухаметшин Д.Ф., Симдянов И.В.

В конце статьи, вы найдете хороший «сборник рецептов» по массивам, который дает решение многих проблем, с которыми ежедневно встречается веб-программист.

Давайте представим ситуацию, когда файл необходимо считать по символам. Для этого мы можем воспользоваться функцией fgetc() . Функция принимает единственный параметр. Функция полезна если нам необходимо найти какой-либо символ или количество одинаковых символов.

$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while(!feof($fp))
{
$char = fgetc($fp);
if ($char == "с") $i = $i + 1;// Находим символ «с»
}
echo "Количество букв "c" в файле: ". $i;
}
else echo "Ошибка при открытии файла";
?>

III . Закрытие файла

Закрытие файла происходить с помощью функции fclose() , которая принимает 1 обязательный параметр.

$fp = fopen("counter.txt", "r");
if ($fp)
{
echo "Файл открыт";
fclose($fp); // Закрытие файла
}
?>

Сборник рецептов

1) Нам необходимо проверить существует ли тот или иной файл. Для этого мы воспользуемся функцией file_exists() .

myfile("counter.txt"); // Используем функцию myfile, передав в качестве аргумента имя файла

function myfile($name) //Создаем функцию для проверки существования файла
{
if (file_exists($name)) echo "Файл существует";

}
?>

Примечание: Функция file_exists не производит проверку файлов на удаленном веб-сервере. Для правильной работы функции, файл со скриптом должен находиться на том сервере, где и проверяемый файл.

2) Определяем размер файла с помощью функции filesize ()

myfile("counter.txt");

function myfile($name) //Создаем функцию для проверки существования файла и определения размера файла
{
if (file_exists($name)) echo "Размер файла: ".filesize($name)." байт";
else echo "Файл не существует";
}
?>

3) Создание временного файла с помощью функции tmpfile ()

$myfile = tmpfile();
fwrite($myfile, "Эта строка записывается во временный файл."); // Записываем во временный файл
fseek($myfile, 0); // Устанавливаем указатель файла
echo fread($myfile, 1024); // выводим содержимое файла
?>

4) Вам необходимо определить количество строк в файле. Для этого используем функцию count ()

$fp = file("counter.txt");
echo "Количество строк в файле: ".count($fp);
?>

5) Нам необходимо использовать механизм блокировки файла

$fp = fopen("counter.txt", "a");
flock($fp, LOCK_EX); // Блокирование файла для записи
fwrite($fp, "Строка для записи");
flock($fp, LOCK_UN); // Снятие блокировки
fclose($fp);
?>

6) Нам необходимо удалить определенную строку из файла

$num_stroka = 5; //Удалим 5 строку из файла
$file = file("counter.txt"); // Считываем весь файл в массив

for($i = 0; $i < sizeof($file); $i++)
if($i == $num_stroka) unset($file[$i]);

$fp = fopen("counter.txt", "w");
fputs($fp, implode("", $file));
fclose($fp);
?>

7) Определение типа файла. Используем функцию

Я понимаю ваше нетерпение. Мы все что-то пишем-пишем, а пока еще никакой визуализации.

Если вы — начинающий программист, то наверняка привыкли работать так: строчку добавил — проверил выполнение, еще строчку добавил — опять проверил, как программа работает.

А мы тут пишем, но не проверяем. Все верно, не проверяем. Более того, я вам обещаю, что в тех листингах, что мы уже написали, достаточно много ошибок. В основном, конечно, синтаксических. Где-то забыли точку с запятой поставить, где-то $this-> к переменной забыли приписать. Да мало ли что еще...

Но это так и надо. Я не кривлю душой, я действительно все пишу прямо в текстах курса, без какой-либо проверки их в работе.

Так вот, друзья мои. Привыкайте писать именно так! Рождайте в голове задумки и выкладывайте их в виде программного кода. Проверить и отладить вы их всегда успеете. А как показывает практика, в процессе написания нового модуля очень даже часто возникает "задним числом" какая-то новая идея, заставляющая нас возвращаться назад и что-то переделывать. И что, снова тестировать и выискивать глюки? Да ничего подобного — так можно всю жизнь писать один проект.

Но я вам обещаю. Еще несколько занятий, и мы перейдем к классу class_out , перейдем к визуализации данных и добавления их через web-форму, с использованием написанных функций. Готовьте дизайн для вашего нового сайта!

А сегодня мы займемся файловыми процедурами. Нам же надо уметь сохранять тексты и другие файлы. Вот и поучимся.

В PHP существует достаточно много разных механизмов для работы с файлами различных типов. Мы разделим все файлы на два основных типа: текстовые файлы и файлы данных (картинки, музыка, исполняемый код и все остальные типы файлов).

Отличие между текстовыми файлами и остальными состоит в том, что текстовые файлы можно разделить на строки (окончанием строки служит символ EOL — "\n" — Enter). И по этим строкам файл можно читать, писать и все остальное.

Для начала вспомним, что во всех системах файл необходимо открыть, прежде чем что-то с ним сделать.

Открыть файл нам поможет функция PHP fopen() .

Оформляется открытие файла так:

$r=fopen("path_to_file","mode");

где:
$r — указатель на открытый файл. Он нам нужен, чтобы обращаться к нужному файлу, когда их открыто более одного.
path_to_file — абсолютный путь к файлу на диске сервера.
mode — режим, в котором открывается файл.

В PHP можно открыть файл в следующих режимах:

"r " — только для чтения.

"r+ " — для чтения и записи

"w " — только для записи

"a- " — только для записи. То есть файл открывается для записи, но при этом курсор устанавливается в конец файла. Можно сказать, что это открытие файла для дозаписи .

"a+ " — тоже, что и a- , но еще доступно и чтение.

В каждом режиме, где присутствует возможность записи , PHP создаст вам новый файл, если такового не существует в момент открытия. При условии, конечно, что у вас есть на это права в системе.

"w " — писать (w rite)

А к остальным режим нужно обращаться только в том случае, когда не получается реализовать задачу этими двумя, которых почти всегда достаточно.

После того, как файл был открыт, с ним можно проводить операции по записи и чтению данных.

Помните, я как-то писал, что все структуры, имеющие открывающие и закрывающие формы, надо сразу закрывать, как только их открыли, а уж потом писать тело структуры? Вот к файлам это так же относится.

Прежде чем перейти к чтению и записи содержимого файла, давайте его закроем:

fclose($r);

Не сложно. $r — это указатель на открытый файл (вспомните функцию открытия файла).


    После выполнения скрипта PHP сам закроет все файлы, которые вы забыли закрыть. Но если вам важно сохранить в файлах именно то, что надо — сделайте это сами.

Теперь приступим к тирании содержимого файла.

Для начала, я хочу вам показать, как читается и записывается обычный файл с данными (я пронумерую строки для простоты комментирования).

$file_name="/home/roma/address.txt"; // 1 $r=fopen($filename,"r"); // 2 $text=fread($r,filesize($file_name)); // 3 fclose($r); // 4 $text=ereg_replace("213-","670-",$text); // 5 $w=fopen($file_name,"w"); // 6 fwrite($w,$text); // 7 fclose($w); // 8

По строчкам:

1. Определили в переменную путь к файлу. Представим, что в этом файле содержится копия вашей записной книжки.

2. Открываем этот файл для чтения.

3. Читаем в переменную $text содержимое всего файла. Функция filesize() , как раз, сообщает нам размер файла, который мы собрались читать. Зная, что файл не очень большой, мы решаем прочесть в переменную все его содержимое разом.

4. Закрываем файл.

5. А почему мы все это делаем? А потому, что у массы наших друзей сменились первые три цифры телефона: наконец сменили старую АТС на новую цифровую. Функция PHP preg_replace поможет нам заменить все 213- на 670- по всему содержимому переменной $text . А измененный вариант мы записываем обратно в $text .

6. Открываем все тот же файл, но теперь для записи.

7. Записываем в файл содержимое переменной $text .

8. Закрываем файл.

Вот так. Тоже все не сложно.


    Только я прошу не забывать, что работа с файлами чревата множеством самых разных ошибок. Поэтому, как минимум, все открытия файлов должны обязательно сопровождаться проверкой на результат попытки открытия или создания файла. На его существование, если вы его собрались читать и так далее. Я сегодня не стану останавливаться на ошибках — будем рассматривать идеальный безошибочный вариант, но в дальнейшем (в нашей программе) вы обязательно увидите все необходимые проверки.
А теперь напишем ту же самую процедуру, но будем работать с файлом, зная, что это текстовый файл, разбитый на строки. При этом, необходимо предположить, что длина одной строки не более nnn символов (байт). Я думаю, что у нас не более 1024 символов в одной текстовой строке(1K).

$file_name="/home/roma/address.txt"; // 1 $file_new_name="/home/roma/address_new.txt"; // 2 $r=fopen($filename,"r"); // 3 $w=fopen($file_new_name,"w"); // 4 while($str=fgets($r,1024)) // 5 { $str=ereg_replace("213-","670-",$str); // 6 fputs($w,$str); // 7 } fclose($r); // 8 fclose($w); // 9

1. Определяем путь к файлу для чтения

2. Определяем путь к файлу для записи

3. Открываем файл для чтения

4. Открываем другой файл для записи

5. Начинам читать по одной строке в переменную $str из файла $r до тех пор, пока не достигнем конца файла (EOF — End Of File). Причем, строка читается либо до знака конца строки (EOL — End Of Line), либо до 1024-го символа. Это свойство функции чтения строки fgets() .

6. Проводим замену 213 на 670.

7. Записываем строку $str в файл $w .

8, 9. После окончания цикла закрываем оба файла.

Немного длиннее получилось, но насколько правильнее!

Есть разные причины, по которым этот метод можно считать более правильным, чем предыдущий, но я сообщу вам самые веские.

Представьте, что у вас случайно файл оказался размером во много мегабайт: скрипт попросту не выполнится, так как для каждого скрипта отводится ограниченное пространство в оперативной памяти (по умолчанию это 5Mb, если не ошибаюсь).

Или подобную функцию вызвали сразу сто посетителей страницы (например, у вас сто модемных пользователей не спеша тянут с сайта mp3-музыку): у вас просто случится переполнение оперативной памяти сервера, и вы получите по мозгам от вашего администратора.

А еще мы во втором примере прочитали один файл, а записали результат обработки в другой: может случиться так, что произойдет ошибка во время записи данных в файл. В этом случае у нас останется исходная копия данных и нам не придется рвать на голове волосы, разыскивая данные на кассетах с бэкапом.

И это все касается не только обработки текстовых файлов, но файлов данных. Особенно — файлов данных, так как текстовые файлы обычно имеют не такой уж большой размер, как картинки или те же mp3-файлы.

Кстати, в PHP есть замечательная функция readfile() , которая просто читает файл и отдает его в стандартный output (в нашем случае это может быть посетитель сайта) небольшими порциями, не перегружая оперативную память, с требуемой скоростью. Мы ей тоже воспользуемся где-нибудь, я надеюсь.

Завтра напишем функцию добавление новой работы в папку нашего веб-обзорщика.

PHP - Работа с файлами

Правильно работать с файлами должен уметь каждый программист. Данная статья ориентирована на начинающих PHP программистов, однако «сборник рецептов» будет полезен и продвинутым пользователям.

Работа с файлами разделяется на 3 этапа:

  • Открытие файла.
  • Манипуляции с данными.
  • Закрытие файла.

I. Открытие файла

Для того чтобы открыть файл в среде PHP используется функция fopen(). Обязательными параметрами этой функции является имя файла и режим файла.

Согласно документации PHP выделяют следующие виды режимов файлов:

  • r – открытие файла только для чтения.
  • r+ - открытие файла одновременно на чтение и запись.
  • w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.
  • w+ - аналогичен r+, только если на момент вызова файла такой существует, его содержимое удаляется.
  • a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).
  • a+ - открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Примечание: в конце любой из строк может существовать еще один необязательный параметр: b или t. Если указан b, то файл открывается в режиме бинарного чтения/записи. Если же t, то для файла устанавливается режим трансляции перевода строки, т.е. он воспринимается как текстовый.

Для демонстрации рассмотрим следующий сценарий:

//Открывает файл в разных режимах

$fp = fopen("counter.txt", "r"); // Бинарный режим

$fp = fopen("counter.txt", "rt"); // Текстовый режим

$fp = fopen("http://www.yandex.ru", "r");// Открывает HTTP соединение на чтение

$fp = fopen("ftp://user:[email protected]", "w"); //Открываем FTP соединение с указанием логина и пароля

II. Манипуляции с данными файла

Записывать данные в файл при помощи PHP можно при помощи функции fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

$fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи

$mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка

$test = fwrite($fp, $mytext); // Запись в файл

If ($test)

Echo "Данные в файл успешно занесены.";

Else

Echo "Ошибка при записи в файл.";

Fclose($fp); //Закрытие файла

Для построчного считывания файла используют функцию fgets(). Функция принимает 2 обязательных параметра:

If ($fp)

While (!feof($fp))

$mytext = fgets($fp, 999);

Echo $mytext."
";

Else

Fclose($fp);

Примечание: В данном примере значение 999 определяет количество символов, которые будут считываться до тех пор, пока указатель не достигнет конца файла (EOF).

Echo readfile("counter.txt");

Также можно использовать функцию fpassthru() которая принимает 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным).

$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения

If ($fp)

Echo fpassthru($fp);

Else

Echo "Ошибка при открытии файла";

Очень часто встречаются ситуации, когда необходимо содержимое сайта считать в массив. Эту возможность предусматривает использование функции file(). При вызове этой функции, каждая строка файла сохранятся в отдельном элементе указанного массива.

Примечание: Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом, где-то встретиться символ конца файла (EOF), то она не гарантирует вам чтение всего двоичного файла.

$file_array = file("counter.txt"); // Считывание файла в массив $file_array

// Работа с данными массива

Примечание: Работа с массивами подробно описывается здесь, авторы: Мухаметшин Д.Ф., Симдянов И.В.

В конце статьи, вы найдете хороший «сборник рецептов» по массивам, который дает решение многих проблем, с которыми ежедневно встречается веб-программист.

авайте представим ситуацию, когда файл необходимо считать по символам. Для этого мы можем воспользоваться функцией fgetc(). Функция принимает единственный параметр. Функция полезна если нам необходимо найти какой-либо символ или количество одинаковых символов.

$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения

If ($fp)

While(!feof($fp))

$char = fgetc($fp);

If ($char == "с")

$i = $i + 1;// Находим символ «с»

Echo "Количество букв "c" в файле: ". $i;

Else echo "Ошибка при открытии файла";

III. Закрытие файла

Закрытие файла происходить с помощью функции fclose(), которая принимает 1 обязательный параметр.

$fp = fopen("counter.txt", "r");

If ($fp)

Echo "Файл открыт";

Fclose($fp); // Закрытие файла

Сборник рецептов

1) Нам необходимо проверить существует ли тот или иной файл. Для этого мы воспользуемся функцией file_exists().

myfile("counter.txt"); // Используем функцию myfile, передав в качестве аргумента имя файла

function myfile($name) //Создаем функцию для проверки существования файла

If (file_exists($name)) echo "Файл существует";

Примечание: Функция file_exists не производит проверку файлов на удаленном веб-сервере. Для правильной работы функции, файл со скриптом должен находиться на том сервере, где и проверяемый файл.

2) Определяем размер файла с помощью функции filesize()

myfile("counter.txt");

//Создаем функцию для проверки существования файла и определения размера файла

function myfile($name)

If (file_exists($name)) echo "Размер файла: ".filesize($name)." байт";

Else echo "Файл не существует";

3) Создание временного файла с помощью функции tmpfile()

$myfile = tmpfile();

// Записываем во временный файл

Fwrite($myfile, "Эта строка записывается во временный файл.");

Fseek($myfile, 0); // Устанавливаем указатель файла

Echo fread($myfile, 1024); // выводим содержимое файла

4) Вам необходимо определить количество строк в файле. Для этого используем функцию count()

$fp = file("counter.txt");

Echo "Количество строк в файле: ".count($fp);

5) Нам необходимо использовать механизм блокировки файла

$fp = fopen("counter.txt", "a");

Flock($fp, LOCK_EX); // Блокирование файла для записи

Fwrite($fp, "Строка для записи");

Flock($fp, LOCK_UN); // Снятие блокировки

Fclose($fp);

6) Нам необходимо удалить определенную строку из файла

$num_stroka = 5; //Удалим 5 строку из файла

$file = file("counter.txt"); // Считываем весь файл в массив

For($i = 0; $i < sizeof($file); $i++)

If($i == $num_stroka) unset($file[$i]);

$fp = fopen("counter.txt", "w");

Fputs($fp, implode("", $file));

Fclose($fp);

7) Определение типа файла. Используем функцию filetype(), которая принимает единственный параметр

$mytype = filetype("counter.txt");

Echo "Тип файла: ".$mytype;

После вызова строка может содержат одно из следующих значений:

file – обычный файл

dir – каталог

fifo – fifo-канал

block – блочно - ориентированное устройство

char – символьно - ориентированное устройство

unknown – неизвестный тип файла

8) Если вы хотите просмотреть все параметры файла, то следует воспользоваться функцией stat()

$filename = stat("counter.txt");

Echo "

";

Print_r($filename);

Echo "

";

9) Нам необходимо очистить файл, используем функцию ftruncate()

$fp = fopen("counter.txt", "a"); //Открываем файл в режиме записи

Ftruncate($fp, 0) // очищаем файл

10) Нам необходимо узнать дату последнего изменения файла, используем функцию filectime(). Функция возвращает значение времени в форме Unix timestamp.

Echo filectime("counter.txt");

Утилита командной строки mysql является простой SQL-оболочкой (с возможностями библиотеки readline проекта GNU). Она поддерживает интерактивный и неинтерактивный режимы. В интерактивном режиме результаты запроса представляются в ASCII-формате. При использовании в неинтерактивном режиме (например, в качестве фильтра) результат представляется в текстовом формате с символом табуляции в качестве разделителя (выходной формат можно изменить при помощи параметров командной строки). Сценарии можно запускать, как показано ниже:

Shell> mysql database output.tab

Если возникают проблемы из-за недостатка памяти на данном клиенте, применяйте параметр --quick ! Это заставит mysql использовать функцию mysql_use_result() вместо функции mysql_store_result() для получения результирующей выборки данных.

Использовать mysql очень легко. Запустите mysql database или mysql --user=user_name --password=your_password databas e. Наберите SQL-команду прямо в командной строке, завершив ее одним из символов: `;" , `\g" или `\G" , и нажмите клавишу ``Ввод"".

Утилита командной строки mysql поддерживает следующие параметры:

Help Вывод справочной информации об использовании программы и выход из нее. -A, --no-auto-rehash Отключает автоматическое рехеширование. rehash следует использовать для получения хеша таблиц и полей. Это обеспечивает более быстрый старт mysql . --prompt=... Устанавливает приглашение на ввод команд в заданном формате. -b, --no-beep Выключает звуковой сигнал об ошибке. -B, --batch Выводит результаты в пакетном режиме с символом табуляции в качестве разделителя, каждая строка с новой строки. Файл истории не используется. --character-sets-dir=... Директория, где находятся наборы символов. -C, --compress Использовать сжатие данных в протоколе сервер/клиент. -#, --debug[=...] Журнал отладки. Значение по умолчанию - "d:t:o,/tmp/mysql.trace". -D, --database=... Имя используемой базы данных. Большей частью применяется в конфигурационном файле `my.cnf" . --default-character-set=... Установить набор символов по умолчанию. -e, --execute=... Выполнить команду и завершить программу (вывод результата как и для --batch). -E, --vertical Вывести результаты запроса (строки) по вертикали. Можно произвести вывод подобным образом и без данного параметра, завершая команды символами \G . -f, --force Продолжать обработку даже при обнаружении ошибки SQL. -g, --no-named-commands Выключает именованные команды. Следует использовать только команды вида \* либо применять именованные команды только в начале строки, заканчивающейся символом `;" . Начиная с версии 10.9 клиент запускается с этой опцией, включенной по умолчанию! С опцией -g , однако, длинные команды все еще работают с первой строки. -G, --enable-named-commands Разрешает именованные команды. Допускаются длинные команды, а также укороченные команды вида \*. -i, --ignore-space Игнорировать пробел после имен функций. -h, --host=... Подсоединиться к базе данных на указанном хосте. -H, --html Вывести выходные данные в виде HTML. -L, --skip-line-numbers Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках. --no-pager Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix). Смотрите также команду \ h (интерактивная помощь). --no-tee Блокирует выходной файл. Смотрите также команду \h (интерактивная помощь). -n, --unbuffered Очищать буфер после каждого запроса. -N, --skip-column-names Не указывать имена столбцов в результатах. -O, --set-variable var=option Установить значение переменной. Список используемых переменных выводится через --help . -o, --one-database Обновить только базу данных, установленную по умолчанию. Позволяет пропускать обновления другой базы данных в журнале обновления. --pager[=...] Устанавливает тип данных вывода. По умолчанию это переменная окружения PAGER . Ее возможные значения - less, more, cat [> имя файла], и т.д. См. также команду \h (интерактивная помощь). Этот параметр не работает в пакетном (batch) режиме. Пейджер работает только под Unix. -p, --password[=...] Пароль, используемый при подсоединении к серверу баз данных. Если в командной строке пароль не указан, то он запрашивается у пользователя. При использовании краткой формы -p не оставляйте пробел между параметром и значением пароля. -P --port=... Номер порта TCP/IP, используемый для подсоединения. -q, --quick Не кэшировать результат. Выводить его строка за строкой так, как он приходит от сервера. Это может замедлить скорость работы сервера, если вывод результата будет приостановлен. Файл истории не используется. -r, --raw Показывать значения столбцов без какого-либо преобразования. Используется с --batch . -s, --silent Режим молчания. Выводить только сообщения об ошибках. -S --socket=... Файл сокета, используемый для подсоединения. -t --table Выводить результат в табличном формате. Установлено по умолчанию для непакетного режима. -T, --debug-info Выводить некоторые отладочные данные при выходе из программы. --tee=... Присоединить что-либо к выходному файлу. Смотрите также команду \h (интерактивная помощь). Этот параметр не работает в пакетном режиме. -u, --user=# Имя пользователя MySQL, если этот пользователь не является активным в данное время. -U, --safe-updates[=#], --i-am-a-dummy[=#] Разрешает выполнять только операции UPDATE и DELETE , используя ключи. Более полная информация об этом параметре приведена ниже. Можно сбросить данный параметр, установив в конфигурационном файле `my.cnf" значение аргумента --safe-updates=0 . -v, --verbose Более расширенный режим вывода результатов (-v -v -v дает формат вывода таблицы). -V, --version Вывод информации о версии и выход из программы. -w, --wait Если соединение с сервером упало, подождать и попытаться восстановить его, вместо того, чтобы прервать работу.

Через параметры командной строки -O или --set-variable можно также установить следующие переменные:

Если ввести в командной строке help , программа mysql выведет список поддерживаемых ею команд:

Mysql> help Команды MySQL help (\h) Выводит данный текст. ? (\h) Синоним для help. clear (\c) Команда очистки. connect (\r) Снова подключиться к серверу. Дополнительные аргументы - db и host. edit (\e) Редактировать текущую команду с помощью $EDITOR. ego (\G) Послать текущую команду MySQL серверу и вывести результат по вертикали. exit (\q) Выйти из программы. То же что и quit. go (\g) Послать текущую команду MySQL серверу. nopager (\n) Блокировать пейджер, выводить через stdout. notee (\t) Не добавлять записи в выходной файл outfile. pager (\P) Установить PAGER . Выводить результаты запроса через PAGER. print (\p) Вывести текущую команду. prompt (\R) Изменить формат приглашения на ввод команд mysql. quit (\q) Выйти из программы. rehash (\#) Восстановить таблицу хэшей. source (\.) Запустить на выполнение файл с SQL-сценарием. Указать имя файла в качестве аргумента. status (\s) Получить информацию о статусе сервера. tee (\T) Установить параметр outfile . Присоединить что-либо к данному выходному файлу. use (\u) Использовать другую базу данных. Указать имя базы данных в качестве аргумента.

Команда pager работает только под Unix.

Результат этого следующий:

  • Не разрешено выполнять команды UPDATE или DELETE , если не указаны ограничения по ключам в секции WHERE . Однако можно заставить выполняться команды UPDATE / DELETE , используя оператор LIMIT: UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
  • Все слишком большие результаты ограничены строками #select_limit# .
  • SELECT ы, которые могут потребовать для исполнения количество комбинаций строк более, чем #max_join_size# , будут прерваны.

Несколько полезных советов по использованию клиента mysql:

Некоторые данные более удобочитаемы при выводе их по вертикали вместо обычно используемого горизонтального окна вывода. Например, текст, который больше по длине, чем по ширине, и содержит в себе много новых строк, часто намного легче читать в вертикальном представлении.

Mysql> SELECT * FROM mails WHERE LENGTH(txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes: Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8 Thimble> or Unicode? Otherwise, I"ll put this on my TODO list and see what Thimble> happens. Yes, please do that. Regards, Monty file: inbox-jani-1 hash: 190402944 1 row in set (0.09 sec)

  • Для входа в систему можно использовать опции команды tee. Она может быть запущена с помощью параметра --tee=... для mysql или интерактивно из командной строки вводом команды tee . Все представляемые на экране данные будут также добавлены к заданному файлу. Это может быть очень полезно для целей отладки программы. Утилиту tee можно блокировать из командной строки командой notee . Повторный запуск команды tee снова включит журналирование. Если при этом параметр для команды tee не указан, то будет использоваться предыдущий файл. Следует учесть, что команда tee будет записывать результаты в файл после каждой выполненной команды, как раз перед появлением командной строки для ввода очередной команды.
  • При помощи опции --pager[=...] стал возможным просмотр или поиск результатов в интерактивном режиме с помощью Unix-программ less , more или иных подобных. Если явно не указать аргумент в этом параметре, клиент mysql будет искать переменную окружения PAGER и установит значение pager . Программу pager также можно запустить из интерактивной командной строки командой pager и остановить командой nopager . Команда может принимать аргумент, который является необязательным; pager будет установлена в значение этого аргумента.. Команда pager может быть вызвана и без аргумента, но это требует использования опции --pager или соответствующей установки по умолчанию стандартного вывода stdout . Команда pager работает только в Unix, поскольку использует функцию popen() , отсутствующую в Windows. Вместо этого в Windows можно использовать параметр tee , хотя в ряде ситуаций это менее удобно, чем применение команды pager .
  • Несколько советов касательно команды pager: Ее можно использовать для записи в файл: mysql> pager cat > /tmp/log.txt и результаты будут направлены только в файл. Вызываемые командой pager программы могут принимать любые допустимые опции: mysql> pager less -n -i -S Обратите особое внимание на опцию -S в вышеприведенном примере. Она может быть очень полезна при просмотре результатов. Попробуйте применить ее с горизонтальным выводом (завершайте команды символами "\g", or ";") и с вертикальным (в конце команд - "\G"). Очень громоздкие результаты вывода иногда трудно бывает прочесть с экрана, в этом случае команда less с опцией -S позволит просмотреть результаты в интерактивном режиме слева направо, при этом при появлении строк с длиной больше, чем ширина экрана, их вывод будет продолжен вывод с новой строки. Вывод данных в таких случаях получается более удобочитаемым. При интерактивном вызове команды less с опцией "-S" можно переключать режим ее работы (включено/выключено) из командной строки. Чтобы получить дополнительную информацию относительно less, обращайтесь к описанию команды "h".
  • В заключение отметим (если вы этого еще не поняли из предыдущих примеров), что существует возможность комбинировать очень сложные способы обработки результатов. Так, в следующем примере результаты будут посланы в два различных каталога, смонтированных на двух различных жестких дисках в /dr1 and /dr2, и, несмотря на это, результаты можно увидеть на экране посредством команды less: mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | less -n -i -S
  • Приведенные выше функции можно тоже комбинировать: запустив tee и установив pager в less , можно просматривать результаты с помощью Unix-команды less и при этом одновременно производить запись в файл. Разница между служебной Unix-утилитой tee , используемой в программе pager , и встроенной в клиент mysql командой tee заключается в том, что встроенная команда tee работает даже в том случае, если в Unix утилита tee недоступна. Встроенная команда tee также ведет запись всего, что выводится на экран, тогда как утилита Unix tee , используемая с pager , не делает этого в достаточном объеме. Последнее, но тем не менее важное обстоятельство состоит в том, что интерактивная команда tee более удобна для переключения режимов работы включено/выключено, если при записи в файл иногда возникает необходимость отключить эту функцию.

Можно изменить формат приглашения в командной строке клиента mysql .

Возможны следующие опции приглашения:

Опция Описание
\v версия mysqld
\d имя используемой базы данных
\h имя хоста, к которому производится подсоединение
\p номер порта, через который производится подсоединение
\u имя пользователя
\U полный адрес username@host
\\ обратный слэш `\"
\n символ новой строки
\t табуляция
\ пробел
\_ пробел с подчеркиванием
\R время по военному часовому поясу (0-23)
\r время по стандартному часовому поясу (1-12)
\m минуты
\y два разряда года
\Y четыре разряда года
\D полный формат даты
\s секунды
\w день недели в трехбуквенном формате (Mon, Tue, ...)
\P Время до полудня/после полудня (am/pm)
\o месяц в числовом формате
\O месяц в трехбуквенном формате (Jan, Feb, ...)
\c Счетчик, подсчитывающий количество вводимых команд

Символ `\" за которым следует любая другая буква, просто дополняет эту букву.

Установить параметры приглашения можно следующими способами:

В переменных окружения Можно установить переменную окружения MYSQL_PS1 для строки приглашения. Например: shell> export MYSQL_PS1="(\u@\h) [\d]> " `my.cnf" `.my.cnf" Можно установить опцию prompt в любом конфигурационном файле MySQL в группе mysql . Например: prompt=(\u@\h) [\d]>\_ В командной строке Можно установить опцию --prompt из командной строки утилиты mysql . Например: shell> mysql --prompt="(\u@\h) [\d]> " (user@host) > В интерактивном режиме Можно также использовать команду prompt (или \R) для изменения настроек приглашения в интерактивном режиме. Например: mysql> prompt (\u@\h) [\d]>\_ PROMPT set to "(\u@\h) [\d]>\_" (user@host) > (user@host) > prompt Возвращение к исходным (по умолчанию) настройкам PROMPT в утилите mysql> mysql>