РУКОВОДСТВО ПО ИЗУЧЕНИЮ PHP С НУЛЯ С ПРИМЕРАМИ

Содержание

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

Руководство по изучению PHP с нуля с примерами

ДЛЯ ЧЕГО ИСПОЛЬЗУЕТСЯ PHP?

PHP используется примерно на 80% веб-сайтов, чей серверный язык известен. Обычно он используется на веб-сайтах для динамического создания содержимого веб-страницы.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Подробнее

Сценарии использования включают:

  • Сайты и веб-приложения (серверные скрипты)
  • Скрипты командной строки
  • Десктопные (GUI) приложения

Обычно он используется для динамического создания содержимого веб-страницы. Например, если у вас есть веб-сайт блога, вы можете написать несколько скриптов PHP для извлечения сообщений вашего блога из базы данных и их отображения. Другие варианты использования PHP-скриптов:

  • Обработка и сохранение пользовательского ввода из данных формы
  • Настройка и работа с файлами cookie веб-сайта
  • Ограничение доступа к определенным страницам вашего сайта

Facebook, крупнейшая платформа социальных сетей, написана с использованием PHP.

Почему именно PHP?

  • PHP работает на различных платформах (Windows, Linux, Unix, Mac OS X и так далее)
  • PHP совместим практически со всеми используемыми сегодня серверами (Apache, IIS и так далее)
  • PHP поддерживает широкий спектр баз данных
  • PHP бесплатный
  • PHP прост в изучении и эффективно работает на стороне сервера

Что такое файл PHP?

  • Файлы PHP могут содержать текст, HTML, CSS, JavaScript и код PHP
  • Код PHP выполняется на сервере, а результат возвращается в браузер в виде обычного HTML
  • Файлы PHP имеют расширение .php

КАК РАБОТАЕТ PHP?

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

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

Код PHP заключен между тегами <?php и ?> и затем может быть встроен в HTML.


УСТАНОВКА

PHP можно установить с веб-сервером или без него.

GNU/LINUX

В дистрибутивах GNU/Linux на основе Debian вы можете установить PHP так:

sudo apt install php

На Centos 6 или 7 вы можете установить PHP так:

sudo yum install php

После установки вы можете запускать любые файлы PHP, просто сделав это в терминале:

php file.php

Вы также можете установить локальный сервер для запуска веб-сайтов PHP. Для установки веб-сервера Apache:

sudo apt install apache2 libapache2-mod-php

Или вы также можете установить PHP, MySQL и веб-сервер, установив XAMPP (бесплатный кроссплатформенный пакет стека решений для веб-серверов с открытым исходным кодом) или аналогичные пакеты, такие как WAMP или Open Server.


PHP-ФРЕЙМВОРКИ

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

  • Вам не придется изобретать велосипед каждый раз, когда вы создаете проект, многие нюансы уже позаботились о вас.
  • Обычно они хорошо структурированы, что помогает разделить проблемы.
  • Большинство фреймворков следуют лучшим практикам языка.
  • Многие из них следуют шаблону MVC (модель-представление-контроллер), так что он отделяет уровень представления от логики.

Популярные фреймворки PHP:


БАЗОВЫЙ СИНТАКСИС

Скрипты PHP могут быть размещены в любом месте документа и всегда начинаются с <?php и заканчиваются ?>. Кроме того, операторы PHP заканчиваются точкой с запятой ;.

Вот простой скрипт, который использует встроенную функцию echo для вывода на страницу текста Hello World!

<!DOCTYPE html>
<html>
<body>

<h1>Merion Networks</h1>

<?php echo "Hello World!"; ?>

</body>
</html> 	

Результатом этого будет:

Merion Networks

Hello World!

Также для вывода можно использовать фунцию print.

Различия между ними невелики: echo не имеет возвращаемого значения, в то время как print имеет возвращаемое значение 1, поэтому его можно использовать в выражениях. echo может принимать несколько параметров, в то время как print может принимать один аргумент.

КОММЕНТАРИИ

PHP поддерживает несколько способов комментирования:

Однострочные комментарии

<?php
   // Это однострочный комментарий
  
   # Вы также можете делать однострочные комментарии, подобные этому
?> 	

Многострочные комментарии

<? php
/ *
Этот блок комментариев охватывает
несколько
строк
* /
?>	

ЧУВСТВИТЕЛЬНОСТЬ К РЕГИСТРУ

Все ключевые слова, классы и функции НЕ чувствительны к регистру.

В приведенном ниже примере действительны все три оператора echo

<?php
ECHO "Hello!<br>";
echo "Welcome to Developer News<br>";
EcHo "Enjoy all of the ad-free articles<br>";
?>	

Однако все имена переменных чувствительны к регистру. В приведенном ниже примере действительна только первая инструкция, которая отображает значение переменной $name$NAME и $NaMe рассматриваются как разные переменные:

<?php
$name = "Alex";
echo "Hi! My name is " . $name . "<br>";
echo "Hi! My name is " . $NAME . "<br>";
echo "Hi! My name is " . $NaMe . "<br>";
?>	

ПЕРЕМЕННЫЕ

Переменные — это основной способ хранения информации в программе PHP.

Все переменные в PHP начинаются с ведущего знака доллара, например $variable_name. Чтобы назначить переменную, используйте оператор = с именем переменной слева и выражением, которое нужно оценить справа.

Синтаксис:

<? php
// Присваиваем значение "Hello!" к переменной greeting
$greeting = "Hello!";
// Присваиваем значение 8 переменной month
$month = 8;
// Присваиваем значение 2019 переменной year
$year = 2019;
?> 	

ПРАВИЛА ДЛЯ ПЕРЕМЕННЫХ PHP

  • Объявление переменных начинается с символа $, за которым следует имя переменной.
  • Имена переменных могут начинаться только с заглавной или строчной буквы или символа подчеркивания _.
  • Имена переменных могут содержать только буквы, цифры или символы подчеркивания A – z0–9 и _. Другие специальные символы, например + - % () . & недействительны.
  • Имена переменных чувствительны к регистру.

Некоторые примеры разрешенных имен переменных:

  • $my_variable
  • $anotherVariable
  • $the2ndVariable

ПРЕДОПРЕДЕЛЕННЫЕ ПЕРЕМЕННЫЕ

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

  • $this
  • $_GET
  • $_POST
  • $_SERVER
  • $_FILES

ТИПЫ ДАННЫХ PHP

Переменные могут хранить данные разных типов, например:

  • Строка "Hello"
  • Целое число 5
  • Число с плавающей точкой 1.0
  • Логический тип данных 1 or 0
  • Массив array("I", "am", "an", "array")
  • Объект
  • NULL
  • Ресурс

СТРОКИ

Строка — это последовательность символов. Это может быть любой текст в кавычках (одинарный или двойной):

$x = "Hello!";
$y = 'Hello!';

ЦЕЛЫЕ ЧИСЛА

Целочисленный тип данных — это недесятичное число от -2 147 483 648 до 2 147 483 647.

Правила для целых чисел:

  • Целые числа должны содержать хотя бы одну цифру.
  • Целые числа не должны иметь десятичной точки.
  • Целые числа могут быть как положительными, так и отрицательными.
$x = 5; 

ЧИСЛО С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

Число с плавающей запятой — это число с десятичной запятой.

$x = 5.01;

ЛОГИЧЕСКИЙ ТИП ДАННЫХ

Логическое значение представляет два возможных состояния: TRUE (истина) или FALSE (ложь). Логические значения часто используются в условном тестировании.

$x = true;
$y = false;

МАССИВЫ

Массив хранит несколько значений в одной переменной.

$colors = array("Red", "Green", "Blue");	

NULL

Null — это особый тип данных, который может иметь только значение null. Переменные можно объявить без значения или очистить, установив значение null. Кроме того, если переменная создается без присвоения значения, ей автоматически присваивается значение null.

<?php
$greeting = "Hello!";

// очистите значение, установив для него значение null
$greeting = null;
?>	

КЛАССЫ И ОБЪЕКТЫ

Класс — это структура данных, полезная для моделирования вещей в реальном мире, и может содержать свойства и методы. Объекты представляют собой экземпляры класса и представляют собой удобный способ упаковки значений и функций, специфичных для класса.

<?php
class Car {
    function Car() {
        $this->model = "Tesla";
    }
}

// создание объекта
$Lightning = new Car();

// показать свойства объекта
echo $Lightning->model;
?>	

РЕСУРС PHP

Ресурс — это специальная переменная, содержащая ссылку на внешний ресурс. Ресурсы создаются и используются специальными функциями. Вы можете использовать функцию getresourcetype(), чтобы увидеть тип ресурса.

<?php
$c = mysql_connect();
echo get_resource_type($c) . "\n";

$fp = fopen("foo", "w");
echo get_resource_type($fp) . "\n";

$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc) . "\n";

СТРОКИ

Строка (string) — это серия символов. Их можно использовать для хранения любой текстовой информации в вашем приложении.

Есть несколько различных способов создания строк в PHP.


ОДИНОЧНЫЕ КАВЫЧКИ

Простые строки могут быть созданы с использованием одинарных кавычек.

$name = 'Joe';

Чтобы включить в строку одинарную кавычку, используйте обратную косую черту, чтобы экранировать ее.

$last_name = 'O\'Brian';

ДВОЙНЫЕ КАВЫЧКИ

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

$name = "Joe";

Чтобы включить в строку двойные кавычки, используйте обратную косую черту, чтобы экранировать их.

$quote = "Mary said, \"I want some toast,\" and then ran away.";

Строки с двойными кавычками также допускают escape-последовательности. Это специальные коды, которые помещают в вашу строку символы, которые обычно представляют собой невидимые символы. Примеры включают символы новой строки \n, табуляции \t и фактические обратные косые черты \\.

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

$name = 'Joe';
$greeting = "Hello $name"; // теперь содержит строку "Hello Joe"	

СТРОКОВЫЕ ФУНКЦИИ

НАЙДИТЕ ДЛИНУ СТРОКИ

Функция strlen() возвращает длину строки.

<?php
echo strlen("Developer News"); // выводит 14
?>	
НАЙДИТЕ КОЛИЧЕСТВО СЛОВ В СТРОКЕ

Функция strwordcount() возвращает количество слов в строке:

<?php
echo str_word_count("Developer News"); // выводит 2
?>	
ПЕРЕВЕРНУТЬ СТРОКУ

Функция strrev() переворачивает строку:

<?php
echo strrev("Developer News"); // выводит sweN repoleveD
?>
ПОИСК ТЕКСТА В СТРОКЕ

Функция strpos() ищет текст в строке и возвращает позицию:

<?php
echo strpos("Developer News", "News"); // выводит 10
?>
ЗАМЕНИТЬ ТЕКСТ ВНУТРИ СТРОКИ

Функция str_replace() заменяет текст в строке:

<?php
echo str_replace("World", "Developer", "World News"); // выводит Developer News
?>

КОНСТАНТЫ

Константы — это тип переменных в PHP. Функция define() для установки константы принимает три аргумента — имя ключа, значение ключа и логическое значение (true или false), которое определяет, является ли имя ключа нечувствительным к регистру (по умолчанию false). После установки значение константы изменить нельзя. Они используется для значений, которые редко меняются (например, пароль базы данных или ключ API).

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

<?php
define("freeCodeCamp", "Learn to code and help nonprofits", false);
echo freeCodeCamp;
>?	

Кроме того, когда вы создаете классы, вы можете объявлять свои собственные константы.

class Human {
  const TYPE_MALE = 'm';
  const TYPE_FEMALE = 'f';
  const TYPE_UNKNOWN = 'u';
  
  .............
}
Примечание. Если вы хотите использовать эти константы внутри класса Human, вы можете ссылаться на них как на self::CONSTANT_NAME. Если вы хотите использовать их вне класса, вам нужно называть их Human::CONSTANT_NAME.

ТРАБЛШУТИНГ

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

<?php
$a = 32;
echo var_dump($a) . "<br>";

$b = "Hello world!";
echo var_dump($b) . "<br>";

$c = 32.5;
echo var_dump($c) . "<br>";

$d = array("red", "green", "blue");
echo var_dump($d) . "<br>";

$e = array(32, "Hello world!", 32.5, array("red", "green", "blue"));
echo var_dump($e) . "<br>";

// Дамп двух переменных
echo var_dump($a, $b) . "<br>";
?>	

Вывод:

int(32)
string(12) "Hello world!"
float(32.5)
array(3) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" }
array(4) { [0]=> int(32) [1]=> string(12) "Hello world!" [2]=> float(32.5) [3]=> array(3) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" } }
int(32) string(12) "Hello world!" 

ОПЕРАТОРЫ

PHP содержит все обычные операторы, которые можно ожидать от языка программирования.

Одиночный знак равенства = используется в качестве оператора присваивания, а двойной == или тройной === используется для сравнения.

Обычные символы < и > также можно использовать для сравнения, а += можно использовать для добавления значения и одновременного его присвоения.

Наиболее примечательным является использование символа . для объединения строк и .= для добавления одной строки в конец другой.

Новым в PHP 7.0.X является оператор spaceship (космический корабль) <=>. Оy возвращает -1, 0 или 1, когда $a меньше, равно или больше $b.

<?php

echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1	

ОПЕРАТОРЫ IF / ELSE / ELSEIF

If / Else — это условное выражение, в котором в зависимости от истинности условия будут выполняться разные действия.

Примечание. Скобки {} необходимы только в том случае, если условие имеет более одного оператора действия, однако лучше всего включать их в любом случае.

ОПЕРАТОР IF

<?php

  if (condition) {
    statement1;
    statement2;
  }	
Примечание. Вы можете вложить столько операторов в блок if, сколько захотите.

ОПЕРАТОР ELSE

<?php

  if (condition) {
    statement1;
    statement2;
  } else {
    statement3;
    statement4;
  }	
Примечание. Оператор else не является обязательным.

ОПЕРАТОР ELSEIF

<?php

  if (condition1) {
    statement1;
    statement2;
  } elseif (condition2) {
    statement3;
    statement4;
  } else {
    statement5;
  }	
Примечание: elseif всегда следует записывать одним словом.

ВЛОЖЕННЫЙ ОПЕРАТОР IF / ELSE

<?php

  if (condition1) {
      if (condition2) {
        statement1;
        statement2;
      } else {
        statement3;
        statement4;
      }
  } else {
      if (condition3) {
        statement5;
        statement6;
      } else {
        statement7;
        statement8;
      }
  }	

НЕСКОЛЬКО УСЛОВИЙ

Одновременно можно использовать несколько условий с логическими операторами «или» ||xor и «и» &&.

Например:

<?php

  if (condition1 && condition2) {
    echo 'Both conditions are true!';
  } elseif (condition 1 || condition2) {
    echo 'One condition is true!';
  } else (condition1 xor condition2) {
    echo 'One condition is true, and one condition is false!';
  }
Примечание. Рекомендуется заключать отдельные условия в скобки, если у вас их несколько (это может улучшить читаемость).

АЛЬТЕРНАТИВНЫЙ СИНТАКСИС IF / ELSE

Также существует альтернативный синтаксис для управляющих структур.

if (condition1):
    statement1;
  else:
    statement5;
  endif;	

ТЕРНАРНЫЕ ОПЕРАТОРЫ

Тернарные операторы в основном представляют собой однострочные операторы if / else.

Предположим, вам нужно отобразить «Привет (имя пользователя)», если пользователь вошел в систему, и «Привет, гость», если он не вошел в систему.

ОПЕРАТОР IF / ELSE:
if($user == !NULL {
  $message = 'Hello '. $user; 
} else {
  $message = 'Hello guest';
}
ТЕРНАРНЫЙ ОПЕРАТОР:

Синтаксис:

$a = (условие) ? $b : $c;

Это значит, что если условие в скобках будет выполнено (true), то переменной $a будет присвоено значение переменной $b, а если нет, то $c

$message = 'Hello '.($user == !NULL ? $user : 'Guest');

SWITCH

В PHP оператор Switch очень похож на оператор Switch в JavaScript. Это позволяет проводить быстрое тестирование с множеством различных возможных условий, код также более читабелен.

<?php
	// Switch Statement Example
	switch ($i) {
    	case "free":
    	    echo "i is free";
    	    break;
    	case "code":
    	    echo "i is code";
    	    break;
    	case "camp":
    	    echo "i is camp";
    	    break;
    	default:
    	    echo "i is freecodecamp";
            break;
	}

BREAK

Оператор break; завершает switch и продолжает выполнение остальной части кода приложения. Если вы не используете оператор break;, вы можете запустить несколько вариантов и операторов, иногда это может быть желательно, и в этом случае вам не следует включать оператор break;.

Пример такого поведения можно увидеть ниже:

<?php
    $j = 0;

    switch ($i) {
        case '2':
            $j++;
        case '1':
            $j++;
            break;
        default:
            break;
    }

Если $i = 1, значение $j будет:

1

Если $i = 2, значение $j будет:

2

Хотя в некоторых случаях break; можно опустить, не вызывая проваливания внутрь, обычно рекомендуется включать его для удобочитаемости и безопасности:

<?php
    switch ($i) {
        case '1':
            return 1;
        case '2':
            return 2;
        default:
            break;
     }
<?php
    switch ($i) {
        case '1':
            return 1;
            break;
        case '2':
            return 2;
            break;
        default:
            break;
     }

Пример:

<?php
//инициализировать случайным целым числом в пределах диапазона
$diceNumber = mt_rand(1, 6);

//инициализировать
$numText = "";

//используем switch
  switch($diceNumber) 
  {
  case 1:
    $numText = "One";
    break;
  case 2:
    $numText = "Two";
    break;
  case 3:
  case 4:
    // case 3 и 4 исполятся
    $numText = "Three or Four";
    break;
  case 5:
    $numText = "Five";
    echo $numText;
    // break; //без указания break или return он продолжит выполнение до следующего case.
  case 6:
    $numText = "Six";
    echo $numText;
    break;
  default:
    $numText = "unknown";
  }
  
  //показать результат
  echo 'Dice show number '.$numText.'.';

?>	

Вывод:

если case = 1
> Dice show number One.

если case = 2
> Dice show number Two.

если case = 3
> Dice show number Three or Four.

если case = 4
> Dice show number Three or Four.

если case = 5
> FiveSixDice show number Six.

если case = 6
> SixDice show number Six.

если ничего из вышеперечисленного
> Dice show number unknown.	

ЦИКЛЫ

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

Использование прерывания break внутри цикла может остановить выполнение цикла.


ЦИКЛ FOR

Переберите блок кода определенное количество раз.

<?php
for($index = 0; $index < 5; $index ++)
{
    echo "Current loop counter ".$index.".\n";
}
?>

/*
Output:

Current loop counter 0.
Current loop counter 1.
Current loop counter 2.
Current loop counter 3.
Current loop counter 4.
*/	

ЦИКЛ WHILE

Переберите блок кода, пока условие истинно.

<?php
$index = 10;
while ($index >= 0)
{
    echo "The index is ".$index.".\n";
    $index--;
}
?>

/*
Output:

The index is 10.
The index is 9.
The index is 8.
The index is 7.
The index is 6.
The index is 5.
The index is 4.
The index is 3.
The index is 2.
The index is 1.
The index is 0.
*/	

ЦИКЛ DO…WHILE

Переберите один раз и продолжите цикл, если условие истинно.

<?php
$index = 3;
do
{
    // выполнить это хотя бы 1 раз
    echo "Index: ".$index.".\n"; 
    $index --;
}
while ($index > 0);
?>

/*
Output:

Index: 3.
Index: 2.
Index: 1.
*/	

ЦИКЛ FOREACH

Переберите блок кода для каждого значения в массиве.

Цикл foreach работает только с массивами и используется для перебора каждой пары ключ/значение в массиве.

Синтаксис:

foreach ($array as $value) {
  code to be executed;
}

Для каждой итерации цикла значение текущего элемента массива присваивается $value, а указатель массива перемещается на единицу, пока не достигнет последнего элемента массива.

<?php
$fruits = array ("Orange", "Apple", "Banana",  "Cherry", " Mango");
foreach ( $fruits as $value )
{
echo  "$value<br />";
} 
?> 

Output:

Orange
Apple
Banana
Cherry
Mango 

ФУНКЦИИ

Функция — это блок операторов, который можно многократно использовать в программе.

Простая функция и ее вызов:

function say_hello() {
  return "Hello!";
}

echo say_hello();	

Простая функция с параметром и ее вызов:

function say_hello($friend) {
  return "Hello " . $friend . "!";
}

echo say_hello('Tommy');

strtoupper — Делает все символы БОЛЬШИМИ!

function makeItBIG($a_lot_of_names) {
  foreach($a_lot_of_names as $the_simpsons) {
    $BIG[] = strtoupper($the_simpsons);
  }
  return $BIG;
}

$a_lot_of_names = ['Homer', 'Marge', 'Bart', 'Maggy', 'Lisa'];
var_dump(makeItBIG($a_lot_of_names));

МАССИВЫ

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


ТИПЫ МАССИВОВ

В PHP есть два типа массивов: индексированные массивы и ассоциативные массивы. У каждого есть свое применение, и мы рассмотрим, как создавать эти массивы.


ИНДЕКСИРОВАННЫЙ МАССИВ

Индексированный массив — это список упорядоченных значений. Каждому из этих значений в массиве присваивается порядковый номер. Индексы для массивов всегда начинаются с 0 для первого значения, а затем увеличиваются на единицу оттуда.

<?php
$shopping_list = array("eggs", "milk", "cheese");
?>	

$shopping_list[0] вернет «eggs», $shopping_list[1] вернет «milk», и $shopping_list[2] вернет «cheese».


АССОЦИАТИВНЫЙ МАССИВ

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

<?php
$student_scores = array("Joe" => 83, "Frank" => "93", "Benji" => "90");
?>	

$student_scores['Joe'] вернет 83, $student_scores['Frank'] вернет 93, $student_scores['Benji'] вернет 90.


МНОГОМЕРНЫЙ МАССИВ

Многомерный массив — это массив, содержащий другие массивы. Это позволяет создавать сложные структуры данных, которые могут моделировать очень сложную группу данных.

<?php
$students = 
  array(
    array("first_name" => "Joe", "score" => 83, "last_name" => "Smith"),
    array("first_name" => "Frank", "score" => 92, "last_name" => "Barbson"),
    array("first_name" => "Benji", "score" => 90, "last_name" => "Warner")   
  );
?>	

Теперь вы можете получить first_name первого студента с помощью:

$students[0]['first_name']

ПОЛУЧИТЬ ДЛИНУ МАССИВА

Функция count() используется для возврата длины (количества элементов) массива:

<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>	

СОРТИРОВКА МАССИВОВ

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


SORT()

Функция sort() сортирует значения массива в возрастающем алфавитном / числовом порядке (например, A, B, C, D, E … 5, 4, 3, 2, 1 …)

<?php
$freecodecamp = array("free", "code", "camp");
sort($freecodecamp);
print_r($freecodecamp);
?>

Вывод:

Array
(
    [0] => camp
    [1] => code
    [2] => free
)

RSORT()

Функции rsort() сортируют значения массива в убывающем алфавитном / числовом порядке (например, Z, Y, X, W, V … 5, 4, 3, 2, 1 …)

<?php
$freecodecamp = array("free", "code", "camp");
rsort($freecodecamp);
print_r($freecodecamp);
?>	

Вывод:

Array
(
    [0] => free
    [1] => code
    [2] => camp
)	

ASORT()

Функция asort() сортирует ассоциативный массив по его значениям в возрастающем алфавитном / числовом порядке (например, A, B, C, D, E … 5, 4, 3, 2, 1 …)

<?php
$freecodecamp = array("zero"=>"free", "one"=>"code", "two"=>"camp");
asort($freecodecamp);
print_r($freecodecamp);
?>

Вывод:

Array
(
    [two] => camp
    [one] => code
    [zero] => free
)	

KSORT()

Функция ksort() сортирует ассоциативный массив по его ключам в возрастающем алфавитном / числовом порядке (например, A, B, C, D, E … 5, 4, 3, 2, 1 …)

<?php
$freecodecamp = array("zero"=>"free", "one"=>"code", "two"=>"camp");
ksort($freecodecamp);
print_r($freecodecamp);
?>

Вывод:

Array
(
    [one] => code
    [two] => camp
    [zero] => free
)

ARSORT()

Функция arsort() сортирует ассоциативный массив по его значениям в убывающем алфавитном / числовом порядке (например, Z, Y, X, W, V … 5, 4, 3, 2, 1 …)

<?php
$freecodecamp = array("zero"=>"free", "one"=>"code", "two"=>"camp");
arsort($freecodecamp);
print_r($freecodecamp);
?>	

Вывод:

Array
(
    [zero] => free
    [one] => code
    [two] => camp
)

KRSORT()

Функция krsort() сортирует ассоциативный массив по его ключам в убывающем алфавитном / числовом порядке (например, Z, Y, X, W, V … 5, 4, 3, 2, 1 …)

<?php
$freecodecamp = array("zero"=>"free", "one"=>"code", "two"=>"camp");
krsort($freecodecamp);
print_r($freecodecamp);
?>

Вывод:

Array
(
    [zero] => free
    [two] => camp
    [one] => code
)

ФОРМЫ

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

Чтобы форма работала на таких языках, как PHP, вам понадобятся некоторые базовые атрибуты в html. В большинстве случаев PHP использует суперглобальные переменные post и get для получения данных из формы.

<html>
<body>
  <form method="get" action="target_proccessor.php">
      <input type="search" name="search" /><br />
      <input type="submit" name="submit" value="Search" /><br />
  </form>
<body>
</html>	

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


ПРОВЕРКА ТРЕБУЕМЫХ ВВОДОВ

В PHP есть несколько функций для проверки выполнения необходимых входных данных. Это функции issetempty и is_numeric.

ПРОВЕРКА ФОРМЫ, ЧТОБЫ УБЕДИТЬСЯ, ЧТО ОНА УСТАНОВЛЕНА

isset проверяет, установлено ли поле и не является ли оно нулевым. Пример:

$firstName = $_GET['firstName']

if(isset($firstName)){
  echo "firstName field is set". "<br>";
}
else{
  echo "The field is not set."."<br>";
}	

ОБРАБОТКА ВВОДА ФОРМЫ

Можно получить входные данные формы с глобальными переменными $POST и $GET.

В приведенном ниже примере отображается простая HTML-форма с двумя полями ввода и кнопкой отправки:

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html> 	

Когда пользователь заполняет форму выше и нажимает кнопку отправки, данные формы отправляются для обработки в файл PHP с именем welcome.php. Данные формы отправляются методом HTTP POST.

Чтобы отобразить отправленные данные, вы можете просто повторить все переменные. Welcome.php выглядит так:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html> 	

Результат может быть примерно таким:

Welcome John
Your email address is john.doe@example.com 

Тот же результат может быть достигнут с помощью метода HTTP GET.

GET VS POST

И GET, и POST создают массив (например, array (key1 => value1, key2 => value2, key3 => value3, ...)). Этот массив содержит пары ключ/значение, где ключи — это имена элементов управления формы, а значения — входные данные от пользователя.

И GET, и POST рассматриваются как $ _GET и $ _POST. Это суперглобальные объекты, что означает, что они всегда доступны независимо от области видимости — и вы можете получить к ним доступ из любой функции, класса или файла, не делая ничего особенного.

$_GET — это массив переменных, переданных текущему скрипту через параметры URL.

$_POST — это массив переменных, переданный текущему скрипту с помощью метода HTTP POST.

КОГДА ИСПОЛЬЗОВАТЬ GET?

Информация, отправленная из формы с помощью метода GET, видна всем (все имена и значения переменных отображаются в URL-адресе). GET также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов. Однако, поскольку переменные отображаются в URL-адресе, можно добавить страницу в закладки. В некоторых случаях это может быть полезно.

GET может использоваться для отправки не конфиденциальных данных.

Примечание: GET НИКОГДА не следует использовать для отправки паролей или другой конфиденциальной информации!
КОГДА ИСПОЛЬЗОВАТЬ POST?

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

Кроме того, POST поддерживает расширенные функции, такие как поддержка многостраничного двоичного ввода при загрузке файлов на сервер.

Однако, поскольку переменные не отображаются в URL-адресе, добавить страницу в закладки невозможно.


ВКЛЮЧАЕМЫЕ ФАЙЛЫ PHP

Оператор include (или require) берет весь текст/код/ ?разметку, которые существуют в указанном файле, и копирует их в файл, который использует оператор include.

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


ОПЕРАТОРЫ PHP INCLUDE И REQUIRE

Можно вставить содержимое одного файла PHP в другой файл PHP (до того, как сервер выполнит его), с помощью оператора include или require.

Операторы include и require идентичны, за исключением того что в случае сбоя:

  • require выдаст фатальную ошибку E_COMPILE_ERROR и остановит скрипт
  • include выдаст только предупреждение E_WARNING, и сценарий продолжится

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

Синтаксис

Syntax
include 'filename';

or

require 'filename';

Пример:

Предположим, у нас есть стандартный файл футера с именем footer.php, который выглядит так:

<?php
echo "<p>Copyright &copy; 1999-" . date("Y") . " wiki.merionet.ru</p>";
?>	

Чтобы включить файл футера на страницу, используйте оператор include:

<html>
<body>

<h1>Welcome to my home page!</h1>
<p>Some text.</p>
<p>Some more text.</p>
<?php include 'footer.php';?>

</body>
</html> 

ОБРАБОТКА ФАЙЛОВ PHP

PHP имеет несколько функций для создания, чтения, загрузки и редактирования файлов.


ФУНКЦИЯ PHP READFILE ()

Функция readfile() читает файл и записывает его в выходной буфер.

Предположим, у нас есть текстовый файл с именем webdictionary.txt, хранящийся на сервере, который выглядит следующим образом:

AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language	

Код PHP для чтения файла и записи его в выходной буфер выглядит следующим образом (функция readfile() возвращает количество байтов, прочитанных в случае успеха):

 <?php
echo readfile("webdictionary.txt");
?> 	
AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language236 

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


ОТКРЫТЬ ФАЙЛ PHP — FOPEN()

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

Используем тот же файл со словарем. Первый параметр fopen() содержит имя открываемого файла, а второй параметр указывает, в каком режиме файл должен быть открыт. В следующем примере также создается сообщение, если функция fopen() не может открыть указанный файл:

<!DOCTYPE html>
<html>
<body>

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>

</body>
</html>
AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language 	
Функция die() является псевдонимом функции exit().Функция exit() печатает сообщение и завершает текущий скрипт.

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

  • r — Открыть файл только для чтения. Указатель файла начинается с начала файла
  • w — Открыть файл только для записи. Удаляет содержимое файла или создает новый файл, если он не существует. Указатель файла начинается с начала файла
  • a — Открыть файл только для записи. Существующие данные в файле сохраняются. Указатель файла начинается с конца файла. Создает новый файл, если файл не существует
  • x — Создает новый файл только для записи. Возвращает FALSE и ошибку, если файл уже существует.
  • r+ — Открыть файл для чтения или записи. Указатель файла начинается с начала файла
  • w+ — Открыть файл для чтения или записи. Удаляет содержимое файла или создает новый файл, если он не существует. Указатель файла начинается с начала файла
  • a+ — Открыть файл для чтения или записи. Существующие данные в файле сохраняются. Указатель файла начинается с конца файла. Создает новый файл, если файл не существует
  • x+ — Создает новый файл для чтения или записи. Возвращает FALSE и ошибку, если файл уже существует.

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

Если вы используете fopen() для файла, который не существует, он создаст его, учитывая, что файл открыт для записи w или добавления a.


ФУНКЦИЯ PHP FREAD()

Функция fread() читает из открытого файла.

Первый параметр fread() содержит имя файла для чтения, а второй параметр определяет максимальное количество байтов для чтения.

Следующий код PHP читает файл webdictionary.txt до конца:

fread($myfile,filesize("webdictionary.txt"));

ФУНКЦИЯ PHP FCLOSE()

Функция fclose() используется для закрытия открытого файла.

Хорошая практика программирования — закрывать все файлы после того, как вы закончили с ними. Вы же не хотите, чтобы открытый файл, бегающий по вашему серверу, занимал ресурсы!

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

<?php
$myfile = fopen("webdictionary.txt", "r");
// выполнение работы с файлом...
fclose($myfile);
?>

ФУНКЦИЯ PHP FWRITE()

Функция fwrite() используется для записи в файл.

Первый параметр fwrite() содержит имя файла для записи, а второй параметр — это строка, которую нужно записать.

В приведенном ниже примере пара имен записывается в новый файл с именем newfile.txt:

 <?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "John Doe\n";
fwrite($myfile, $txt);
$txt = "Jane Doe\n";
fwrite($myfile, $txt);
fclose($myfile);
?> 

PHP И JSON

ЧТО ТАКОЕ JSON?

JSON (JavaScript Object Notation) представляет собой синтаксис для хранения и обмена данными.

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

PHP имеет несколько встроенных функций для обработки JSON.

Рассмотрим следующие две функции:

  • json_encode()
  • json_decode()

ФУНКЦИЯ PHP JSON_ENCODE()

Функция json_encode() используется для кодирования значения в формат JSON.

В этом примере показано, как кодировать ассоциативный массив в объект JSON:

<!DOCTYPE html>
<html>
<body>

<?php
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);

echo json_encode($age);
?>

</body>
</html>

Вывод:

{"Peter":35,"Ben":37,"Joe":43} 	

ФУНКЦИЯ PHP JSON_DECODE()

Функция json_decode() используется для декодирования объекта JSON в объект PHP или ассоциативный массив.

В этом примере данные JSON декодируются в объект PHP:

<!DOCTYPE html>
<html>
<body>

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';
 
var_dump(json_decode($jsonobj));
?>

</body>
</html>

Вывод:

object(stdClass)#1 (3) { ["Peter"]=> int(35) ["Ben"]=> int(37) ["Joe"]=> int(43) } 	

Функция json_decode() по умолчанию возвращает объект. Функция json_decode() имеет второй параметр, и если задано значение true, объекты JSON декодируются в ассоциативные массивы.

<!DOCTYPE html>
<html>
<body>

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';
 
var_dump(json_decode($jsonobj, true));
?>

</body>
</html>	

Вывод:

array(3) { ["Peter"]=> int(35) ["Ben"]=> int(37) ["Joe"]=> int(43) } 

ИСКЛЮЧЕНИЯ PHP

Что такое исключение (exception) ? Исключением является объект, описывающий ошибку или неожиданное поведение сценария PHP.

Многие функции и классы PHP создают исключения. Пользовательские функции и классы также могут вызывать исключения.

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


ВЫБРОС ИСКЛЮЧЕНИЯ

Оператор throw позволяет определяемой пользователем функции или методу вызывать исключение. Когда возникает исключение, следующий за ним код выполняться не будет.

Если исключение не обнаружено, произойдет фатальная ошибка с сообщением Uncaught Exception.

Попробуем сгенерировать исключение, не улавливая его:

 <?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?> 	

Результат будет выглядеть примерно так:

Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4 

ОПЕРАТОРЫ TRY…CATCH

Чтобы избежать ошибки из приведенного выше примера, мы можем использовать оператор try ... catch для перехвата исключений и продолжения процесса.

Синтаксис

try {
  код, который может генерировать исключения
} catch(Exception $e) {
  код, который запускается при обнаружении исключения
}

Пример: показывать сообщение при возникновении исключения:

<!DOCTYPE html>
<html>
<body>

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

</body>
</html>

Результат:

Unable to divide. 	

Блок catch указывает, какой тип исключения следует перехватить, и имя переменной, которая может использоваться для доступа к исключению. В приведенном выше примере тип исключения — Exception, а имя переменной — $e.

Оператор try ... catch ... finally может использоваться для перехвата исключений. Код в блоке finally всегда будет выполняться независимо от того, было ли обнаружено исключение. Если присутствует finally, блок catch не обязателен.

Синтаксис:

try {
  код, который может генерировать исключения
} catch(Exception $e) {
  код, который запускается при обнаружении исключения
} finally {
  код, который всегда выполняется независимо от того, было ли обнаружено исключение

ООП В PHP

Начиная с PHP5, вы также можете писать PHP-код в объектно-ориентированном стиле.

Объектно-ориентированное программирование выполняется быстрее и проще.


ЧТО ТАКОЕ ООП?

ООП означает объектно-ориентированное программирование.

Процедурное программирование — это создание процедур или функций, выполняющих операции с данными, а объектно-ориентированное программирование — это создание объектов, содержащих как данные, так и функции.

Объектно-ориентированное программирование имеет несколько преимуществ перед процедурным программированием:

  • ООП быстрее и проще в исполнении
  • ООП обеспечивает четкую структуру программ
  • ООП упрощает обслуживание, изменение и отладку кода
  • ООП позволяет создавать полностью повторно используемые приложения с меньшим количеством кода и более коротким временем разработки

Классы и объекты — это два основных аспекта объектно-ориентированного программирования.

Класс — это шаблон для объектов, а объект — это экземпляр класса.

Когда создаются отдельные объекты, они наследуют все свойства и поведение класса, но каждый объект будет иметь разные значения свойств.


ОПРЕДЕЛИТЬ КЛАСС

Класс определяется с помощью ключевого слова class, за которым следует имя класса и пара фигурных скобок {}. Все его свойства и методы заключены в фигурные скобки:

 <?php
class Fruit {
  // здесь будет код...
}
?> 	

Ниже мы объявляем класс с именем Fruit, состоящий из двух свойств $name и $color и двух методов set_name() и get_name() для установки и получения свойства $name:

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>	
Примечание. В классе переменные называются свойствами, а функции — методами.

ОПРЕДЕЛИТЬ ОБЪЕКТЫ

Классы — ничто без объектов. Мы можем создать несколько объектов из класса. Каждый объект имеет все свойства и методы, определенные в классе, но у них будут разные значения свойств.

Объекты класса создаются с использованием ключевого слова new.

В приведенном ниже примере $apple и $banana являются экземплярами класса Fruit:

 <?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}

$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');

echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?> 	

Получим такой вывод:

Apple
Banana	

КЛЮЧЕВОЕ СЛОВО $ THIS

Ключевое слово $this относится к текущему объекту и доступно только внутри методов.

Взгляните на следующий пример:

 <?php
class Fruit {
  public $name;
}
$apple = new Fruit();
?> 	

Итак, где мы можем изменить значение свойства $name? Есть два пути:

1. Внутри класса (добавив метод set_name() и используя $this):

<?php
class Fruit {
  public $name;
  function set_name($name) {
    $this->name = $name;
  }
}
$apple = new Fruit();
$apple->set_name("Apple");
?>	

2. Вне класса (путем прямого изменения значения свойства):

 <?php
class Fruit {
  public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
?> 	

БАЗА ДАННЫХ PHP MYSQL

С помощью PHP вы можете подключаться к базам данных и управлять ими.

MySQL — самая популярная система баз данных, используемая с PHP.

Базы данных полезны для категориального хранения информации.


ПОДКЛЮЧИТЬСЯ К MYSQL

PHP 5 и более поздние версии могут работать с базой данных MySQL, используя:

  • Расширение MySQLi
  • (PHP Data Objects)
ЧТО СЛЕДУЕТ ИСПОЛЬЗОВАТЬ: MYSQLI ИЛИ PDO?

И MySQLi, и PDO имеют свои преимущества:

PDO будет работать с 12 различными системами баз данных, тогда как MySQLi будет работать только с базами данных MySQL.

Итак, если вам нужно переключить свой проект на использование другой базы данных, PDO упрощает этот процесс. Вам нужно только изменить строку подключения и несколько запросов. С MySQLi вам нужно будет переписать весь код, включая запросы.

Оба являются объектно-ориентированными, но MySQLi также предлагает процедурный API.

Оба поддерживают подготовленные заявления. Подготовленные операторы защищают от внедрения SQL-кода и очень важны для безопасности веб-приложений.

Инстукцию по установке MySQLi можно прочитать тут, а по установке PDO тут


ОТКРЫТЬ СОЕДИНЕНИЕ С MYSQL

Прежде чем мы сможем получить доступ к данным в базе данных MySQL, нам необходимо подключиться к серверу:

Пример (объектно-ориентированный MySQLi):

 <?php
$servername = "localhost";
$username = "username";
$password = "password";

// Создать соединение
$conn = new mysqli($servername, $username, $password);

// Проверить соединение
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?> 

Пример (процедура MySQLi):

 <?php
$servername = "localhost";
$username = "username";
$password = "password";

// Создать соединение
$conn = mysqli_connect($servername, $username, $password);

// Проверить соединение
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?> 

Пример PDO:

 <?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?> 
Примечание. В приведенном выше примере PDO мы также указали базу данных (myDB). PDO требуется действующая база данных для подключения. Если база данных не указана, выдается исключение.

ЗАКРЫТЬ СОЕДИНЕНИЕ

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

Пример (объектно-ориентированный MySQLi):

$conn->close(); 

Пример (процедура MySQLi):

mysqli_close($conn); 

Пример PDO:

$conn = null; 

PHP MYSQL ВСТАВИТЬ ДАННЫЕ

Вот несколько правил синтаксиса, которым нужно следовать:

  • SQL-запрос должен быть заключен в кавычки в PHP.
  • Строковые значения внутри SQL-запроса должны быть заключены в кавычки.
  • Числовые значения не должны указываться.
  • Слово NULL нельзя заключать в кавычки.

Оператор INSERT INTO используется для добавления новых записей в таблицу MySQL:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...) 

Пример (объектно-ориентированный MySQLi):

 <?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?> 	

Пример (процедура MySQLi):

 <?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if (mysqli_query($conn, $sql)) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?> 	

Пример PDO:

 <?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $sql = "INSERT INTO MyGuests (firstname, lastname, email)
  VALUES ('John', 'Doe', 'john@example.com')";
  // use exec() because no results are returned
  $conn->exec($sql);
  echo "New record created successfully";
} catch(PDOException $e) {
  echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?> 	

PHP MYSQL ВЫБРАТЬ ДАННЫЕ

Оператор SELECT используется для выбора данных из одной или нескольких таблиц:

SELECT column_name(s) FROM table_name

Или мы можем использовать символ * для выбора всех столбцов из таблицы:

SELECT * FROM table_name 

Пример (объектно-ориентированный MySQLi):

 <?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "0 results";
}
$conn->close();
?> 	

Сначала мы настраиваем SQL-запрос, который выбирает столбцы idfirstname и lastname из таблицы MyGests. Следующая строка кода выполняет запрос и помещает полученные данные в переменную с именем $result.

Затем функция num_rows() проверяет, было ли возвращено больше нуля строк.

Если возвращается более нуля строк, функция fetch_assoc() помещает все результаты в ассоциативный массив, который мы можем просмотреть в цикле. Цикл while() просматривает набор результатов и выводит данные из столбцов idfirstname и lastname.

В следующем примере показано то же, что и в примере выше, в процедурном отношении MySQLi:

Пример (процедура MySQLi):

 <?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // output data of each row
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "0 results";
}

mysqli_close($conn);
?> 

Пример PDO. Он выбирает столбцы idfirstname и lastname из таблицы MyGests и отображает их в таблице HTML:

 <?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

class TableRows extends RecursiveIteratorIterator {
  function __construct($it) {
    parent::__construct($it, self::LEAVES_ONLY);
  }

  function current() {
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
  }

  function beginChildren() {
    echo "<tr>";
  }

  function endChildren() {
    echo "</tr>" . "\n";
  }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
  $stmt->execute();

  // set the resulting array to associative
  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
    echo $v;
  }
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?> 

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

SELECT column_name(s) FROM table_name WHERE column_name operator value 

ИТОГ

В этом руководстве мы изучили следующие темы об основах PHP:

  • Для чего используется PHP?
  • Как работает PHP?
  • Установка PHP
  • PHP-фреймворки
  • Базовый синтаксис PHP
  • Переменные PHP
  • Типы данных PHP
  • Траблшутинг
  • Операторы
  • Циклы
  • Функции
  • Массивы
  • Формы
  • Работа с файлами в PHP
  • Работа с JSON в PHP
  • Исключения PHP
  • ООП в PHP
  • Работа с БД MySQL в PHP

Больше статей и руководств по разработке можно найти в нашем разделе.

Также вам может быть интересно наше Руководство по изучению Python с нуля с примерами

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Переводчик »