Php

Pdo php 7: PHP: MySQL (PDO) — Manual

Содержание

PHP: PDO::query — Manual

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDO::query —
Выполняет SQL-запрос и возвращает результирующий набор в виде объекта
PDOStatement

Описание

public PDO::query
( string $statement
, int $fetch_style = PDO::FETCH_COLUMN
, int $colno
) : PDOStatement

public PDO::query
( string $statement
, int $fetch_style = PDO::FETCH_CLASS
, string $classname
, array $ctorargs
) : PDOStatement

public PDO::query
( string $statement
, int $fetch_style = PDO::FETCH_INTO
, object $object
) : PDOStatement

Если запрос будет запускаться многократно, для улучшения производительности
приложения имеет смысл этот запрос один раз подготовить методом
PDO::prepare(), а затем запускать на выполнение методом
PDOStatement::execute() столько раз, сколько потребуется.

Если после выполнения предыдущего запроса вы не выбрали все данные из
результирующего набора, следующий вызов PDO::query()
может потерпеть неудачу. В таких случаях следует вызывать метод
PDOStatement::closeCursor(), который освободит ресурсы
базы данных, занятые предыдущим объектом PDOStatement. После этого можно
безопасно вызывать PDO::query().

Замечание:

Если передано более двух аргументов, то они будут обработаны, как если
бы вы вызвали PDOStatement::setFetchMode() применительно к
возвращаемому объекту.

Возвращаемые значения

PDO::query() возвращает объект PDOStatement или false,
если запрос выполнить не удалось.

Примеры

Пример #1 Демонстрация работы PDO::query

Приятной особенностью PDO::query() является то, что
после выполнения запроса SELECT можно сразу работать с результирующим набором
посредством курсора.


<?php
$sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
foreach ($conn->query($sql) as $row) {
    print $row['name'] . "\t";
    print $row['color'] . "\t";
    print $row['calories'] . "\n";
}
?>

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

apple   red     150
banana  yellow  250
kiwi    brown   75
lemon   yellow  25
orange  orange  300
pear    green   150
watermelon      pink    90

Смотрите также

  • PDO::exec() — Выполняет SQL-запрос и возвращает количество затронутых строк
  • PDO::prepare() — Подготавливает запрос к выполнению и возвращает связанный с этим запросом
    объект
  • PDOStatement::execute() — Запускает подготовленный запрос на выполнение

Как установить отсутствующий MySQL PDO

Я начну с ответа, а затем с контекста. ПРИМЕЧАНИЕ. Это исправление было зарегистрировано выше, я просто повторяю его для всех, кто гуглит.

  1. Загрузите исходный код php 7 и распакуйте его.
  2. открой свой терминал
  3. плавать в каталог ext/pdo_mysql
  4. использовать команды:

    phpize

    ./configure

    make

    сделать установку (как root)

  5. включить расширение = mysqli.so в вашем файле php.ini

Отсюда записывается как ответ отсюда (пожалуйста, подпишите его, если он вам тоже помог): https://stackoverflow.com/a/39277373/3912517

Контекст: Я пытаюсь добавить LimeSurvey в стандартный докер WordPress. Единственное, что меня сдерживает — это «Библиотека драйверов PHP PDO», которая «Не найдена»

php -i | grep PDO                                                                                  
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_odbc' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc. so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled

Ubuntu 16 (Ubuntu 7.3.0)

apt-get install php7.0-mysql

Результат:

Package 'php7.0-mysql' has no installation candidate

Получить инструкции о том, что все, что мне нужно сделать, это запустить это:

add-apt-repository -y ppa:ondrej/Apache2

Но тогда я получаю это:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 223: ordinal not in range(128)

Поэтому я пытаюсь принудительно установить некоторый тип UTF: LC_ALL = C.UTF-8 add-apt-repository -y ppa: ondrej/Apache2 И получаю следующее: Не найдено действительных данных OpenPGP.

Следуйте другим инструкциям, чтобы запустить это: Apt-get update И я получаю это: Err: 14 http://ppa.launchpad.net/ondrej/Apache2/ubuntu cosmic/Основные пакеты AMD64 404 Не найдено Ошибка: 15 http://ppa.launchpad.net/ondrej/php/ubuntu cosmic/main Пакеты AMD64 404 Not Found И — я думаю из-за этого — я тогда получаю:

The repository 'http://ppa.launchpad.net/ondrej/Apache2/ubuntu cosmic Release' does not have a Release file.

На этом этапе я все еще получаю это при обновлении apt-get:

Package 'php7.0-mysql' has no installation candidate.

Я начинаю пытаться добавлять в библиотеки php, получаю проблемы с Unicode, пытаюсь обойти это и … у вас есть идея … удар-моль. Я сдался и посмотрел, смогу ли я скомпилировать его, и нашел ответ, с которого начал. 

Вы можете быть удивлены, почему я так много написал? Так что любой поисковик может найти это решение (включая меня!).

PHP 7 работа с PDO и защита от SQL инъекций

В этой части учебника будет рассказано как происходит работа с PHP PDO, для тех кто не знает, это такая библиотека для работы с БД, главное его преимущество от mysqli, заключается в том, чт с её помощью можно работать с разными базами данных.

Также плюсом будет, то, что PDO более безопасное.

Как подключить PDO в PHP 7:

Для начала нужно разобрать как подключить PDO в РHP, делается это не много по другому, не так как в mysqli.

$pdo = new PDO(‘mysql:host=localhost;dbname=test’, ‘root’, »);

Как видите всё достаточно просто, первым параметром идут данные о БД, какая используется БД, сервер и имя, дальше двумя параметрами идёт имя пользователя и пароль.

Работа с PDO в PHP 7:

Теперь можно начать потихоньку работать с этой библиотекой, по началу всё будет точно также как и с mysqli.

// Делаем MySQL запрос

$users = $pdo -> query(‘SELECT * from users’);

// Через foreach выводим всё на экран

foreach($users as $row) {

    // Выводим на экран

    echo «Имя: {$row[«name»]}; <br>Фамилия: {$row[«surname»]};

         <hr>»;

}

Как видите всё очень просто, в каком то смысле даже проще чем с mysqli.

Для отправки запроса используется используется метод query, который возвращает некую сущность, со всеми возвращенными данными, для вывода используем цикл foreach.

Безопасный запрос в PDO:

У выше показанного кода есть одна проблем, этого его безопасность, в том дела есть такое понятие SQL инъекции, это когда в форму ввели вместо, к примеру, логина, SQL код, который рушит всё БД, от них нужно защищаться.

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

Код защиты от SQL инъекций:

Для этого создадим отдельную функцию, которая будет называться query.

function query($sql, $params = [], $pdo) {

    // Сначала подготавливаем запрос для его изменений

    $stmt = $pdo -> prepare($sql);

    // Проверяем, есть ли параметры которые мы отправили

    if (!empty($params)) {

        // Цикл для подстановки данных

        foreach ($params as $key => $val) {

            // Подставляем данные

            $stmt -> bindValue(‘:’. $key, $val);

        }

    }

    // Подготавливаем запрос для выполнения

    $stmt -> execute();

    // Возвращаем запрос

    return $stmt;

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// Делаем SQL запрос

$sql = «SELECT * FROM `users` WHERE `id`=:id»;

// Параметры

$params = array(

    ‘id’ => 2

);

 

// Запускаем нашу функцию

$res = query($sql, $params, $pdo);

// Получаем данные

$res = $res -> fetchAll(PDO::FETCH_ASSOC);

 

// Выводим на экран

foreach($res as $row) {

    echo «Имя: {$row[«name»]}; <br>Фамилия: {$row[«surname»]};

         <hr>»;

}

Теперь разберём программу, если вы приглядитесь, то перед где данную нужно заменить, ставится двоеточии и название, слитно, потом в массиве пишем параметры, ну и получаем данные через метод fetchAll(PDO::FETCH_ASSOC), ну а дальше как обычно выводим на экран.

Важно:

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

Вот результат этой программы.

Вывод:

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

Если вам надо больше информации про PDO, то заходите сюда.

Подписываетесь на соц-сети:

Оценка:

(Пока оценок нет)

Загрузка…

Дополнительно:

PHP — PDO не найден — Centos7 PHP7.1

Я новичок на сервере, поэтому, пожалуйста, обнажите мою глупость.

Это скорее проблема сервера (я думаю), а не проблема Laravel, но мой сайт основан на Laravel5.4, так что просто к сведению.

В настоящее время я использую Google Cloud Platform для настройки виртуальной машины, которая, похоже, работает как любая другая.

На данный момент установлено:

  • Centos 7
  • MariaDB
  • Apache / 2.4.6 (CentOS)
  • php71

поэтому я положил папку моего сайта в /var/www/html/mywebsitefolder

Я настроил базу данных mysql и настроил свой веб-сайт для настройки базы данных и попытался запустить php71 artisan migrate с этой точки зрения. И это выдает следующие ошибки:

Неустранимая ошибка PHP: класс ‘PDO’ не найден в
/ Вар / WWW / HTML / soyegg / поставщик / Laravel / рамки / SRC / Осветите / База данных / Co
nnection.php в строке 1200 В строке Connection.php 1200:
Класс ‘PDO’ не найден

который я исследовал и сказал, что php-pdo должен быть установлен, поэтому я запустил следующую строку в cli:

yum install php-pdo
yum install php-pdo_mysql

однако ошибка все еще сохраняется.

Затем я продолжил исследование и сказал, что мне нужно явно указать расширение в php.ini для того, чтобы использовать их. Но когда я проверяю php.ini для php71 это не включает какую-либо строку, похожую на следующую, в которой другие сказали, что они должны быть добавлены в php.ini:

extension=pdo.so
extension=pdo_sqlite.so
extension=pdo_mysql.so

Я noob, так что я думаю, php71 не играет расширение, как это? Но я все еще добавил это где-то в php.ini где это комментирует о расширении.

Тогда больше ошибок выкинуло.

Пожалуйста, дайте мне знать, что происходит.

РЕДАКТИРОВАТЬ:
Спасибо за Даниил, после запуска yum install php-mysqlnd показана следующая ошибка:

> Loaded plugins: fastestmirror Loading mirror speeds from cached
> hostfile  * base: mirror. team-cymru.com  * epel: mirror.steadfast.net
> * extras: mirror.team-cymru.com  * remi-safe: mirror.team-cymru.com  * updates: mirror.genesisadaptive.com Resolving Dependencies
> --> Running transaction check
> ---> Package php-mysqlnd.x86_64 0:5.4.16-45.el7 will be installed
> --> Processing Conflict: php-mysql-5.4.16-45.el7.x86_64 conflicts php-mysqlnd
> --> Finished Dependency Resolution Error: php-mysql conflicts with php-mysqlnd-5.4.16-45.el7.x86_64  You could try using --skip-broken to
> work around the problem
> ** Found 12 pre-existing rpmdb problem(s), 'yum check' output follows: 1:NetworkManager-1.10.2-14.el7_5.x86_64 has missing requires of
> NetworkManager-libnm(x86-64) = ('1', '1.10.2', '14. el7_5')
> 1:NetworkManager-1.10.2-16.el7_5.x86_64 is a duplicate with
> 1:NetworkManager-1.10.2-14.el7_5.x86_64
> binutils-2.27-28.base.el7_5.1.x86_64 is a duplicate with
> binutils-2.27-27.base.el7.x86_64 gnupg2-2.0.22-5.el7_5.x86_64 is a
> duplicate with gnupg2-2.0.22-4.el7.x86_64
> google-cloud-sdk-207.0.0-1.el7.noarch is a duplicate with
> google-cloud-sdk-204.0.0-1.el7.noarch
> google-cloud-sdk-208.0.1-1.el7.noarch is a duplicate with
> google-cloud-sdk-207.0.0-1.el7.noarch
> google-cloud-sdk-208.0.2-1.el7.noarch is a duplicate with
> google-cloud-sdk-208.0.1-1.el7.noarch
> google-cloud-sdk-209.0.0-1.el7.noarch is a duplicate with
> google-cloud-sdk-208.0.2-1.el7.noarch httpd-2.4.6-80.el7.centos.x86_64
> has missing requires of httpd-tools = ('0', '2.4.6', '80.el7.centos')
> httpd-2.4.6-80.el7.centos.1.x86_64 is a duplicate with
> httpd-2.4.6-80.el7.centos.x86_64
> selinux-policy-targeted-3.13.1-192.el7_5.3.noarch has missing requires
> of selinux-policy = ('0', '3.13.1', '192.el7
> _5.3') selinux-policy-targeted-3.13.1-192.el7_5.4.noarch is a duplicate with selinux-policy-targeted-3.13.1-192.el7_5.3.no arch

-1

Решение

MariaDB — это ветка MySQL, поэтому установите версию драйвера PDO для MySQL на PHP 7. 1, запустив

yum install php7.1-mysql

Это должно автоматически добавить его в загруженную конфигурацию php.ini файл.

0

Другие решения

Попробуйте следующую команду:

yum install php71w-mysqlnd

Если установка выполняется этой командой, она будет автоматически добавлена ​​в php.ini конфигурационный файл.

0

PHP: PDO :: query — Руководство

(PHP 5> = 5.1.0, PHP 7, PECL pdo> = 0.2.0)

PDO :: query —
Выполняет инструкцию SQL, возвращая набор результатов как объект PDOStatement

Описание

public PDO :: query
(строка $ выписка
, интервал $ fetch_style = PDO :: FETCH_COLUMN
, int $ colno
): PDOStatement

public PDO :: query
(строка $ выписка
, интервал $ fetch_style = PDO :: FETCH_CLASS
, строка $ имя класса
, массив $ ctorargs
): PDOStatement

public PDO :: query
(строка $ выписка
, интервал $ fetch_style = PDO :: FETCH_INTO
, объект $ объект
): PDOStatement

Для запроса, который вам нужно отправить несколько раз, вы лучше поймете
производительность, если вы подготовите объект PDOStatement, используя
PDO :: prepare () и выполните оператор с несколькими
вызывает PDOStatement :: execute ().

Если вы не получите все данные в наборе результатов перед выдачей вашего
при следующем вызове PDO :: query () ваш вызов может завершиться ошибкой. Вызов
PDOStatement :: closeCursor () для освобождения базы данных
ресурсы, связанные с объектом PDOStatement перед выдачей вашего
следующий вызов PDO :: query () .

Примечание :

Если этой функции передается более одного аргумента, остальные аргументы
будет рассматриваться, как если бы вы позвонили
PDOStatement :: setFetchMode () для результирующего оператора
объект.

Параметры

Заявление

Оператор SQL для подготовки и выполнения.

Данные внутри запроса должны быть правильно экранированы.

Возвращаемые значения

PDO :: query () возвращает объект PDOStatement, или false
при неудаче.

Примеры

Пример # 1 Демонстрация PDO :: query

Приятной особенностью PDO :: query () является то, что он
позволяет вам перебирать набор строк, возвращаемый
успешно выполнил оператор SELECT.


$ sql = 'ВЫБРАТЬ имя, цвет, калории ИЗ фруктов ЗАКАЗАТЬ ПО имени';
foreach ($ conn-> query ($ sql) as $ row) {
print $ row ['name']. "\ t";
print $ row ['цвет']. "\ t";
print $ row ['калории']. "\ п";
}
?>

В приведенном выше примере будет выведено:

яблоко красное 150
банановый желтый 250
киви коричневый 75
лимонно-желтый 25
апельсин апельсин 300
груша зеленая 150
арбузный розовый 90
 

PHP отсутствует драйвер mysql pdo

Я пытаюсь запустить приложение Symfony 3 с php 7, установленным из исходного кода, и получаю исключение драйвера Missing PDO.Согласно http://pecl.php.net/package/PDO_MYSQL, расширение PDO_MYSQL теперь является частью ядра PHP.

Q1.a) Если у меня есть расширение PDO_MYSQL (которое я должен, поскольку его ядро), означает ли это, что у меня также есть драйвер mysql pdo?

Q2.b) Требуется ли дополнительная конфигурация среды выполнения, чтобы убедиться, что драйвер используется?

Я пробовал добавить

расширение = php_pdo.so

расширение = php_pdo_mysql.so

на мой загруженный файл php. ini файл.

Q2.a) Это правильные имена расширений? Как я мог узнать?
Q2.b) Нужно ли мне вообще предоставлять ссылки на расширения для основных элементов php?

Наконец:

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

Спасибо за ваш вклад.

Редактировать 1: Я работаю на Linux Mint.
Edit 2: Вот еще пара подробностей о том, что я вижу на своей стороне:

«При запуске встроенного php-сервера я получаю следующее сообщение:
Предупреждение PHP: запуск PHP: невозможно загрузить динамическую библиотеку ‘/ usr / local / lib / php / extensions / no-debug-non-zts-20151012 / php_pdo.так ‘- /usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo.so: невозможно открыть файл общих объектов: нет такого файла или каталога в Неизвестном в строке 0
Предупреждение PHP: запуск PHP: невозможно загрузить динамическую библиотеку ‘/usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo_mysql.so’ — / usr / local / lib / php / extensions / no -debug-non-zts-20151012 / php_pdo_mysql.so: невозможно открыть файл общих объектов: такого файла или каталога нет в Неизвестном в строке 0 «

Это сообщение подсказывает мне, что либо ссылки на расширения неверны, либо расширение не существует.Я использовал «dpkg -L php-mysql» и обнаружил, что пакет был установлен в «/ usr / share / doc / php-mysql», однако, когда я проверяю каталог php-mysql, все, что я вижу, это журнал изменений и файл авторских прав (с показанными скрытыми правами). Это истинное место установки пакета, и если да, то должны ли быть другие места в этом каталоге?

Обзор PHP 7 — База знаний DreamHost

Обзор

PHP 7 — следующее крупное обновление языка программирования PHP, которое предлагает ряд преимуществ по сравнению с предыдущими версиями, например новую версию Zend Engine и более высокую производительность.

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

Инструкции по обновлению версии PHP вашего сайта см. В следующей статье:

Льготы

Следующий список взят с php.net:

  • Повышенная производительность: PHP 7 в два раза быстрее, чем PHP 5.6
  • Значительно уменьшено использование памяти
  • Абстрактное синтаксическое дерево
  • Постоянная поддержка 64-битных версий
  • Улучшенная иерархия исключений
  • Многие фатальные ошибки преобразованы в исключения
  • Безопасный генератор случайных чисел
  • Удалены старые и неподдерживаемые SAPI и расширения
  • Оператор объединения с нулевым значением (??)
  • Объявления возврата и скалярного типа
  • Анонимные классы
  • Утверждения о нулевой стоимости

Общие инструкции по обновлению

  • Вы можете обновить версию PHP вашего сайта в панели.
  • Перед обновлением убедитесь, что ваше программное обеспечение и любые плагины / темы / расширения совместимы с PHP 7.
  • Убедитесь, что ваши запросы к базе данных используют для подключения mysqli или PDO_MySQL, поскольку расширение mysql было удалено. Просмотрите раздел Мой сайт не будет подключаться к моей базе данных после обновления до PHP 7, чтобы получить более подробную информацию.

PHP 7.3 Известные проблемы

Ошибка компиляции JIT: ошибок памяти больше нет

Если вы видите на своем сайте ошибку «Ошибка JIT-компиляции: больше нет памяти», это связано с известной ошибкой в ​​PHP 7.3. Чтобы обойти это, вы можете отключить JIT-компилятор, добавив следующую строку в свой phprc-файл:

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

Кроме того, вы можете перейти на PHP 7.4 на панели DreamHost, чтобы избежать этой ошибки.

mcrypt.so

Поддержка mcrypt была удалена, начиная с PHP 7. 2.0. Любые скрипты, зависящие от mcrypt, необходимо будет обновить, чтобы вместо них использовать OpenSSL или Sodium.

Часто задаваемые вопросы

Что случилось с PHP 6?

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

Доступен ли PHP 7 на машинах Nginx?

Да.

Поиск и устранение неисправностей

Мой сайт не будет подключаться к моей базе данных после обновления до PHP 7

Предыдущие версии PHP предлагали три PHP API для доступа к базе данных MySQL. Их было:

В PHP 7 удалена поддержка расширения mysql, и это влияет на следующее:

  • Любые запросы, использующие функцию mysql_connect, не будут работать.
  • PHP 7 позволяет подключаться к базе данных MySQL только с помощью mysqli или PDO_MySQL.

Все скрипты должны быть обновлены для продолжения работы.

Ошибки сеанса

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

 [Вт, 05 января, 12:41: 24.497212 2021] [fcgid: warn] [pid 16093: tid 4253425600256] [client xxx.xxx.xxx.xxx:11929] mod_fcgid: stderr: Предупреждение PHP: session_start (): не удалось прочитать данные сеанса: пользователь (путь: / home / username / tmp /) в / home / username / example.com / file.php в строке 212 

Просмотрите следующее решение от PHP.net для получения подробной информации о том, как устранить это предупреждение.

См. Также

пакетов Alpine Linux

Пакет php7-pdo
Версия
7.4.16-r0
Описание Расширение PHP7: объекты данных PHP
пр. https: // www.php.net/
Лицензия PHP-3.01 BSD-3-Clause LGPL-2.0 или более поздняя версия MIT Zend-2.0
Филиал край
Репозиторий Сообщество
Архитектура x86
Размер 47.41 кБ
Установленный размер 144 Кб
Происхождение php7
Сопровождающий Валерий Картель
Время сборки 2021-03-05 01:29:49
Фиксация 9143cbe1c7001595ece53c7456a92318c851f6ab
Репозиторий Git Репозиторий Git
Журнал сборки Журнал сборки
Содержание Содержимое упаковки

10 вещей, которые нельзя делать в PHP 7

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

Лучшие практики PHP 7 AKA Чего нельзя делать в PHP 7

  1. Не использовать функции mysql_
  2. Не пишите бессмысленный код
  3. Не использовать PHP Закрыть теги
  4. Не передавать по ссылке, если в ней нет необходимости
  5. Не выполнять запросы в цикле
  6. Не использовать * в SQL-запросах
  7. Не доверяйте вводимым пользователем данным
  8. Не пытайся быть умным
  9. Не изобретайте колесо заново
  10. Не пренебрегайте другими языками

1.Не используйте функции mysql_

Наконец-то настало время, когда вам просто не будут рекомендовать прекратить использование функций mysql_ . PHP 7 полностью удалит их из ядра, что означает, что вам нужно будет перейти на гораздо лучшие функции mysqli_ или еще более гибкую реализацию PDO.

2. Не пишите бессмысленный код

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

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

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

3. Не используйте закрывающие теги PHP в конце файла

Если вы посмотрите, большинство основных файлов WordPress опускают конечный тег PHP, когда файл заканчивается кодом PHP.Фактически, Zend Framework прямо запрещает это. Это не требуется для PHP, и, пропуская его в конце файла, вы гарантируете, что конечные пробелы не могут быть добавлены.

4. Не передавать по ссылке, если в ней нет необходимости

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

Очевидно, люди думают, что это ускоряет их код, хотя, по мнению уважаемых программистов PHP, это не так.

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

5. Не выполнять запросы в цикле

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

Из-за особенностей работы WordPress могут быть некоторые исключения. Хотя get_post_meta () будет получать мета-значение из базы данных, вы можете использовать его в цикле, если вы просматриваете метаданные одного конкретного сообщения. Это потому, что когда вы используете его впервые, WordPress фактически извлекает все метаданные и кэширует их. Последующие вызовы используют кэшированные данные, а не вызовы базы данных.

Лучший способ решить эти проблемы — прочитать документацию по функциям и использовать что-то вроде Query Monitor.

Подпишитесь на информационный бюллетень

Мы увеличили наш трафик на 1187% с помощью WordPress.

Мы покажем вам, как это сделать.

Присоединяйтесь к более чем 20 000 других людей, которые получают нашу еженедельную рассылку с инсайдерскими советами по WordPress!

Подпишись сейчас

6.

Не используйте * в SQL-запросах

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

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

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

7. Не доверяйте вводимым пользователем данным

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

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

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

8. Не пытайся быть умным

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

Назовите переменные соответствующим образом, задокументируйте код, выберите ясность вместо краткости. Еще лучше использовать стандартизованный объектно-ориентированный код, который более или менее документирует сам себя без необходимости в большом количестве встроенных комментариев.

9. Не изобретайте колесо заново

PHP существует уже давно, веб-сайты создаются еще дольше. Скорее всего, все, что вам нужно сделать, кто-то уже делал раньше. Не бойтесь обращаться за поддержкой к другим, Github — ваш друг, Composer — ваш друг, Packagist — ваш друг.

От регистраторов до инструментов управления цветом, от профилировщиков до фреймворков для модульного тестирования, от API Mailchimp до Twitter Bootstrap — все доступно одним нажатием кнопки (или вводом команды), используйте их!

10. Не пренебрегайте другими языками

Если вы специалист по PHP, сейчас стандартной практикой является знание HTML, CSS, Javascript и MySQL по крайней мере. Когда вы достаточно хорошо владеете этими языками, пора снова изучить Javascript. Javascript — это не jQuery .Вы должны правильно изучить Javascript, чтобы использовать его эффективно.

Я также рекомендовал бы изучить все об объектно-ориентированном PHP, это спасает жизнь и сделает ваш код на порядки лучше. Это также откроет двери для таких языков, как C # и Java, их будет намного легче понять, если у вас за плечами ООП.

Расширьте свои знания, узнав о менеджерах пакетов, сценариях сборки, Coffeescript, LESS, SASS, YAML, механизмах создания шаблонов и других замечательных инструментах.Я настоятельно рекомендую взглянуть на другие PHP-фреймворки, в частности, на Laravel.

Если у вас все хорошо с этим, как насчет Ruby, Ruby on Rails, разработки приложений для Android, iPhone, Windows Phone? Вы могли бы подумать, что в этом нет никакого смысла, потому что они выходят за рамки вашей зоны комфорта и рабочих потребностей, но в том-то и дело. На каждом языке есть чему научить, и дополнительные знания никогда не помешают. Не случайно все ведущие PHP-разработчики много знают о других языках программирования!


Если вам понравилась эта статья, то вам понравится хостинговая платформа Kinsta WordPress.Ускорьте свой сайт и получите круглосуточную поддержку от нашей опытной команды WordPress. Наша инфраструктура на базе Google Cloud ориентирована на автоматическое масштабирование, производительность и безопасность. Позвольте нам показать вам разницу в Kinsta! Ознакомьтесь с нашими тарифами

Необходимо установить расширение PDO для PHP — поддержка

Я работаю над проектом WordPress, созданным не из Local. Я установил его на Local, так как он упрощает настройку и воспроизведение конфигурации рабочего сервера, но я не знал о необходимости расширения PDO.А потом я нашел страницу, которая загружает города и штаты из БД с помощью PDO, я не могу изменить реализацию.

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

Я уже некоторое время искал решение этой проблемы и решил задать вопрос…
Чтобы представить себе мой поиск, я искал решение внутри и за пределами местного сообщества, но ни одно из них не помогло.

Внутри сообщества

Всем привет!
Просто быстрый вопрос: можно ли установить расширения php, и если да, то как я могу установить расширение pdo_sqlite?
Спасибо!

Попытка установить MailPoet на локальной установке для создания серии обучающих видеороликов.Судя по всему, MailPoet использует PDO. Я получаю следующую фатальную ошибку:
Неперехваченное исключение «PDOException» с сообщением «SQLSTATE [HY000] [2002] Нет такого файла или каталога» …
Обнаружена аналогичная проблема в Stack Overflow, которая рекомендует создать символическую ссылку на mysql.sock: https://stackoverflow.com/questions/22188026/sqlstatehy000-2002-no-such-file-or-directory/23433268#23433268
Но я не могу понять, где mysql. so…

Вы можете использовать это руководство для компиляции большинства расширений PECL в Local.В качестве примера мы будем использовать SSh3.

Загрузите и извлеките соответствующее расширение PECL.

Загрузите соответствующую версию здесь: https://pecl.php.net/package/ssh3 (если вы используете PHP 7+, вам потребуется SSh3 1.0+)

Распакуйте архив в каталог / app сайта.

Установить зависимости
Требуется практически для всех расширений PHP, которые вы собираетесь компилировать. После того, как вы сделаете это один раз, вам не нужно будет делать это для последующих расширений PHP для…

Здравствуй,
Одно из приятных небольших дополнений в WordPress 4.7 заключается в том, что PDF-файлы, загруженные в медиа-библиотеку, теперь создают изображение для предварительного просмотра, которое можно использовать во всем WordPress изначально.
Это, конечно, требует, чтобы ImageMagick работал.
Достаточно легко включить ImageMagick на MAMP (который я использовал раньше), но как я могу установить ImageMagick на сервере Local by Flywheel?

И внешнее сообщество (поскольку Local — это виртуальная машина с SSH)
stackoverflow.com

Установка драйвера PDO на сервер MySQL Linux

PHP, MySQL, PDO, PHPMyadmin

Форумы Matomo — 24 фев 2009 г.

Вам необходимо включить расширения PDO и PDO_MYSQL в вашем php.ini файл

Во время установки Piwik на сервере Windows 2008 IIS и установке php 5.2.8 я получаю следующую ошибку: Вам необходимо включить расширения PDO и PDO_MYSQL в вашем файле php.ini. На сервере Windows вы можете добавить следующие строки в свой php.ini …

Есть еще ссылки, но никакая другая не дает важной информации по этому вопросу…

Продолжение: я смог установить php5-mysql (который должен поставляться с расширением pdo) из apt-get после выполнения обновления apt-get и «настройки» его для загрузки на php. ini , но при перезапуске службы php или даже всего сервера он не загружает сокет расширения, потому что не находит его.

Вот что я получаю:

  $ service php-5.6.20-fpm перезапуск
Изящное завершение работы php-fpm. сделано
 сделано
Запуск php-fpm 
Предупреждение . Запуск PHP: невозможно загрузить динамическую библиотеку '/opt/php/5.6.20/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - / opt /php/5.6.20/lib/php/extensions/no-debug-non-zts-20131226/pdo.итак: невозможно открыть файл общих объектов: такого файла или каталога нет в Неизвестно в строке 0
сделано

Я предполагаю, что метод установки по умолчанию apt-get не соответствует местам загрузки php Local, но теперь я даже не могу найти, где был установлен php-mysql.
И поскольку я не знаю, где он был установлен, я не могу запустить ./configure --with-pdo-mysql = , чтобы снова настроить и скомпилировать php (даже не уверен, нужен ли он, но кажется).Кроме того, на моем php.ini есть пустая строка с pdo_mysql.default_socket = , также не знаю, где сокет, чтобы заполнить его там):

Любая помощь?

Как установить PHP / PHP 7.3 на Debian 10 Buster

Как я могу установить PHP / PHP 7.3 на Debian 10 Buster Linux ?. Это руководство проведет вас через шаги по установке PHP 7.3 в Debian 10 Buster. Пользователям веб-сервера Apache необходимо установить libapache2-mod-php , который позволяет размещать и обслуживать приложения PHP с веб-сервером Apache.

В Debian 10 Buster по умолчанию устанавливается версия PHP 7.3. Единственным предварительным условием для этой установки является предварительно установленный Debian 10 и учетная запись пользователя с доступом sudo.

Шаг 1. Обновление системы

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

 sudo apt update && sudo apt -y upgrade 

Шаг 2: Установите PHP / PHP 7.3 на Debian 10 Buster

Следующим шагом будет установка PHP 7.3 в Debian 10. Выполните следующие команды на своем терминале Debian 10, чтобы установить PHP 7.3.

 sudo apt -y install php php-common 

Подтвердите версию PHP.

 $  php -v  
PHP 7.3.3-1 (cli) (построено: 7 марта 2019 19:43:34) (NTS)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.3 , Copyright (c) 1998-2018 Zend Technologies
с Zend OPcache v7.3.3-1, Copyright (c) 1999-2018, Zend Technologies

Шаг 3: Установка расширений PHP на Debian 10 Buster

Можно установить

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

 sudo apt -y install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath 

Шаг 4: Использование PHP с веб-сервером Apache

Вам необходимо установить веб-сервер Apache, см. ниже:

Как установить стек LAMP на Debian 10 Buster

Затем установите libapache2-mod-php

 sudo apt -y install libapache2-mod -php 

Включить модуль Apache, если он еще не включен, затем перезапустить веб-сервер.

 $  sudo a2enmod php7.3  
Рассмотрение зависимости mpm_prefork для php7.3:
Рассмотрение конфликта mpm_event для mpm_prefork:
Рассмотрение конфликта mpm_worker для mpm_prefork:
Модуль mpm_prefork
Рассмотрение конфликта php7: для php.35 .3 уже включен

$ sudo systemctl restart apache2

Проверьте ниже веб-курсы и курсы повышения квалификации по PHP:

Вот и все. PHP 7.3 установлен на Debian 10 (Buster).Информацию об установке PHP 7.3 в других системах см. Ниже:

Как установить PHP 7.3 / PHP 7.3-FPM на Linux Mint 19

Как установить PHP 7.

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

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