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

У меня есть два файла для моего сайта: search_team.php и returnPossibleTeams.php. search_team — это в основном HTML-страница, которая позволяет пользователю вводить название команды. Всякий раз, когда onKeyUp срабатывает, вызывается функция JavaScript, которая выполняет GET-запрос к returnPossibleTeams.php с AJAX. returnPossibleTeams.php должен выполнить запрос к базе данных, а затем вернуть все возможные результаты.


search_team.php

<script type="text/javascript">

function showTeams(str) {
if (str.length == 0) {
document.getElementById("teamResults").innerHTML = "<br /><hr />Start typing the name of a team to search<br /><hr />";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("teamResults").innerHTML = this.responseText;
}
};

xmlhttp.open("GET", "functions/returnPossibleTeams.php?q=" + str, true);
xmlhttp.send();
}
}

</script>

<div id="main">

<br /><br />

<!-- Search for a team with it's name or ID -->

<div class="title">
Search for a Team
</div>

<div style="text-align:center;">

<br />Enter the target team's name their TFConnections team page.<br /><br />
From there, you can request an invite, view all of their rankings and members, and even
<i>challenge</i> them (if you're in a team of your own).<br />You can also view information
about possible upcoming events and other details they've set up!<br /><br />

<input placeholder="Team Name" onkeyup="showTeams(this.value);" type="text" name="searchterms">

<div id="teamResults">
<hr />Start typing the name of a team to search<br /><hr />
</div>

<br />

</div>

</div>

Следует отметить, что эта страница включает header.php, который создает соединение с базой данных MySQL PDO и хранит его в $db,


returnPossibleTeams.php

<?php

if (isset($_GET['q'])) {

try {
$statement = $db->prepare("SELECT * FROM `teams` WHERE `Team Name` LIKE %:teamname%");
$result = $statement->execute(array('teamname' => $_GET['q']));
} catch (Exception $e) {
echo "An error has occured.";
}

echo $statement->fetch(PDO::FETCH_ASSOC)['Team Name'];
}

?>

У меня проблема в том, что returnPossibleTeams.php не может получить доступ к $db дескриптор базы данных, как это было установлено в файле, включенном в начале search_team.php. Самый простой способ обойти эту проблему отсутствующего ресурса — создать новое соединение с базой данных в начале returnPossibleTeams.php, но это будет крайне неэффективно, так как это будет создавать новое соединение с базой данных каждый раз, когда пользователь нажимает клавишу! Как лучше обойти эту проблему?

0

Решение

Вы можете поставить его в состояние.

if(!isset($db)) {
//Here you have two choices either just connect to the database or require the fb connection file. Either way you need to connect to the database.
}

Таким образом, если он уже установлен, он не будет создавать новое соединение.

РЕДАКТИРОВАТЬ: Тем не менее я думаю, что PHP будет устанавливать новое соединение при каждом вызове в любом случае, потому что это, как работает PHP. Когда скрипт завершает работу и возвращает ваши данные, он завершается, что завершает соединение с базой данных.

-1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector