У меня есть этот простой, но запутанный вопрос, особый для людей, которые являются самообучающимися программистами, такими как мои собственные …
Я читал разную документацию в PHP.NET и MYSQL.COM, все они объясняют, как открыть и как закрыть ее, но для этого вопроса, который действительно не помогает, по крайней мере для меня.
То, как я узнал об этом,
Мне требуется файл для моего вступления в силу, например dbconnection.php или db.php, это имя не является матерью, но контент, вот и вот что я всегда делаю …
<?php // con.php $host = 'localhost'; $us = 'root'; // or whatever name for the user $ps = 'abcd'; // your password $db = 'abc'; // The name of your DB $con = mysqli_connect ($host, $us, $ps, $db); if (mysqli_connect_errno()) { echo "DB server offline: ". $mysqli->connect_error; exit(); }
Итак, моя связь с моей БД, теперь позволяет получить некоторые арбузы
<?php include ('con.php'); // Lets get our varibales $_GET or $_POST // Lets clean our variables // Lets make sure that the data is what we expect, numbers and letters // because thats how I roll! $query_one = "SELECT * FROM table 1 WHERE id = 1"; $r_one = mysqli_query($con, $query_one); $rows = mysqli_fetch_assoc($r_one); // now lets echo the results, or print_r() or json()... mysqli_close($con); // this is pretty straight forward i think...
Теперь вот моя путаница …
<?php include ('con.php'); // Lets get our varibales $_GET or $_POST // Lets clean our variables // Lets make sure that the data is what we expect, numbers and letters // because thats how I roll! $query_one = "SELECT * FROM table_1 WHERE id = '$ids'"; $r_one = mysqli_query($con, $query_one); $rows = mysqli_fetch_assoc($r_one); // If I closed here the second query doesn't get executed... if ($rows['publish'] == 1) { $query_two = "SELECT * FROM table_2 WHERE id_user = '$ids' AND items = '$items'"; // lets do some foreach or while // If I closed here the first query still open... } // If I close here mysqli_close($con); // Am I closing both queries? // Let get some more data // Should I close my third query mysqli_close($con); // hasn't this been close already? which mean that the third query never got the change to execute... correct?
Итак, как вы можете видеть, на MYSQL.com он рассказывает вам, как его закрыть, а PHP.net почти то же самое, но он не говорит вам, когда его закрыть.
если a = 1 сделать запрос, тогда закройте его …
else, если a = 5 делает другой запрос, тогда закройте его, это очень просто, я думаю, но что, если один из моих запросов ретранслирует информацию из другого запроса …
если a = 1 сделать запрос
делайте что-нибудь и многое другое, а тонну IF
если результатом второго запроса был B сделать другой запрос … и так далее …
Возможно, я просто передумал это, тогда есть другой способ открыть или закрыть MySQLi
$con_one = conectTodb(); // queries $con_one ->close();
если у вас есть 3 запроса, con_one, con_two, con_three, то вам нужно закрыть один за другим, например con_one-> close (), con_two-> close (), con_three-> close () … и так далее. . верный?
Я спрашиваю об этом, потому что несколько часов. назад У меня была ошибка, сообщающая мне, что было слишком много соединений с базой данных, и для этого не удалось обработать информацию … это явка, это была миссия-конфигурация сервера, которая заставляла меня думать, что я собираюсь делать, если это была реальная ситуация! ??? что, если пользователь что-то покупает, а потом и POW !!! слишком много соединений, данные потеряны … просто из-за этого дадут некоторые кошмары
Я не знаю … мой мозг пропадает прямо сейчас … может кто-то пожалуйста! объясните это мне, если не много спросить, пожалуйста, приведите несколько примеров …
Большое спасибо!
оплаченный на локальном хосте максимальное количество подключений – 10 (IIS, WAMP, XAMP) … на хосте общего доступа, я думаю, 25 …
mysqli_close()
закрывает соединение, а не запрос . Вы должны только закрыть соединение, если знаете, что он не понадобится еще раз для текущего запроса. Соединение будет автоматически закрываться в конце выполнения PHP, если вы явно не закрываете его в своем коде.
Обычно нет необходимости явно закрывать соединение, и, очевидно, есть некоторые особые обстоятельства, в которых вы, возможно, захотите, например, если ваш сценарий выполняет огромную обработку после использования соединения, где было бы полезно освободить соединение во время обработки.