У меня есть веб-приложение, которое использует разные страницы PHP
для обработки кода.
В верхней части каждой страницы я открываю соединение mysqli
с одной и той же базой данных (с одним и тем же пользователем / паролем):
$link = mysqli_connect("$mysql_server", "$mysql_user", "$mysql_pw", "$mysql_db"); if (!$link) { die('Could not connect: ' . mysql_error()); }
Я понимаю, что лучше использовать одно постоянное соединение. Как включить это на всех страницах?
Легко ли это просто использовать $link = mysqli_connect("p:" . $mysql_server, "$mysql_user", "$mysql_pw", "$mysql_db");
для первого соединения?
При каких обстоятельствах это соединение будет закрыто?
$db = mysqli_connect("p:notlocalhost","notroot","","catalog") or die("Error " . mysqli_error($link));
Это «p:» – при добавлении перед именем узла создает постоянное соединение. Это позже используется на разных страницах. Вы все еще называете тот же конструктор на каждой странице.
Вы не понимаете смысла постоянного соединения . Никто не говорит, что вы можете использовать один раз созданный ресурс PHP на страницах, что, безусловно, невозможно. Постоянное соединение имеет внутреннее техническое значение для соединения PHP-СУБД и никак не влияет на ваш код.
Чтобы избежать написания одного и того же кода на разных страницах, вы можете использовать оператор include
чтобы включить какой-то файл начальной загрузки со всеми распространенными кодами и настройками, включая ваш код соединения db.
Что касается постоянной связи – избегайте ее на некоторое время, так как она может принести больше вреда, чем пользы, если ее использовать без знания.
Также обратите внимание, что вы никогда не должны обращаться к переменной с помощью кавычек. $mysql_user
– это переменная, но "$mysql_user"
– это строка, которая не является одинаковой.
Непрерывное соединение закрывается, когда выполнение скрипта завершено.
При открытии постоянного соединения каждая следующая страница, запрашивающая службы SQL, может повторно использовать такое же установленное соединение с SQL-сервером.
Короче говоря, для каждого запроса вам нужно подключиться.
IMHO, используйте PHP-библиотеку PHP SPL, если возможно, для подключения к базе данных. Используя подготовленные операторы, вы можете исключить SQL-инъекцию.
Ознакомьтесь с примером синглтона в приведенной ниже ссылке для простейшей реализации.