Как получить результаты из базы данных SQL внутри цикла foreach PHP

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

Я думаю, это может быть связано с тем, что $ conn не является глобальной переменной
Это правильно?

Я использую следующий код:

<?php //idlister.php

require 'connectDB.php';

$xml=simplexml_load_file("names.xml") or die("Error:
Cannot create object");
foreach($xml->book as $book)
{
$username = (string)$book->username;
$sql = "SELECT `id`
FROM  `directory`
WHERE  `UserName` =  '$username'
LIMIT 0 , 30";

if ($result = $conn->query($sql)) {

/* fetch associative array */
while ($row = $result->fetch_assoc()) {
echo $row["id"]."<br />";
}

/* free result set */
$result->free();
}
}
$conn->close();
?>

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

Я протестировал тот же код выше, заменив ‘$ username’ на ‘Bill’ (имя в базе данных), и получил ту же ошибку 502 Gateway.

Но когда я взял строку $ result = $ conn-> query ($ sql) для каждого цикла, я получил результаты, которые искал:

<?php //idlister.php

require 'connectDB.php';

$xml=simplexml_load_file("names.xml") or die("Error:
Cannot create object");

$username = (string)$book->username;
$sql = "SELECT `id`
FROM  `directory`
WHERE  `UserName` =  'Bill'
LIMIT 0 , 30";

if ($result = $conn->query($sql)) {

/* fetch associative array */
while ($row = $result->fetch_assoc()) {
echo $row["id"]."<br />";
}

/* free result set */
$result->free();
}

$conn->close();
?>

// Напечатано «20», который является идентификатором Билла

Как получить результаты из цикла foreach или как получить имена из файла XML для поиска в базе данных вне цикла foreach?

Пример XML:

<response>
<book>
<username>Sarah</username>
<gender>f</gender>
<age>23</age>
</book>
<book>
<username>Jonathan</username>
<gender>m</gender>
<age>33</age>
</book>
<book>
<username>Demonte</username>
<gender>m</gender>
<age>18</age>
</book>
</response>

Файл подключения:

<?php //connectDB.php

$servername = "localhost";
$username = "username";
$password = "password";
$database = "Directory";

// Create connection to Directory
$conn = new mysqli($servername, $username, $password, $database);

// Check connection
if ($conn->connect_error) {
die("Connection to the Directory failed: " . $conn->connect_error);
}
echo "<h2>Directory Connection Successful</h2>";

?>

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]