php - 如何在 PHP foreach 循环中从我的 SQL 数据库中获取结果
问题描述
我正在尝试使用包含相应用户名的 XML 文件列出与数据库中的用户名关联的 ID。
我认为这可能与 $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 网关错误。
我测试了上面相同的代码,将 '$username' 替换为 'Bill'(数据库中的一个名称),并得到相同的 502 Gateway 错误。
但是当我从 for each 循环中取出 $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”,这是比尔的 id
如何从 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>";
?>
解决方案
推荐阅读
- javascript - 在 Photoshop 脚本中替换图层图像
- java - 如何从 Java 对象向客户端发送 spring 消息
- asp-classic - 删除查询无法从表单中获取值
- datetime - 将 1 个日期范围映射到另一个日期范围的逻辑?
- reactjs - 如何编写单元测试以检查单击某个链接后是否显示模态
- linux - 遗留的交叉编译功能意外消失了——我怎么知道发生了什么?
- css - css 显示屏幕尺寸是否为 1200 或更大或之间
- mongodb - 无法在 Ubuntu 上的 Golang 中连接到 Mongo Cloud mongodb 数据库
- android - 错误:程序类型已经存在:com.fasterxml.jackson.core.Base64Variant
- javascript - 为什么在 Office.js 中使用 context.sync 时会一直循环?