PHP未与MySQL数据库正确同步

PHP未与MySQL数据库正确同步,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我有一个连接到MySQL数据库的PHP网页。两者都在同一台服务器上。问题是,当我第一次连接到数据库时,一切都很好。后来,我不得不通过phpMyAdmin更改一些字段。完成此操作后,我返回我的PHP页面并与数据库建立了新连接。令我惊讶的是,一切都和我第一次连接时一样 现在,我真的花了大量的时间阅读和四处搜索,据说我做的每件事都很正确。我理解,在完成作业后,必须通过将对象设置为NULL来关闭PDO对象的连接。这样做了,但仍然没有发生任何事情 从我所读的内容来看,所有人和事物都指向$\u SESSIO

我有一个连接到MySQL数据库的PHP网页。两者都在同一台服务器上。问题是,当我第一次连接到数据库时,一切都很好。后来,我不得不通过phpMyAdmin更改一些字段。完成此操作后,我返回我的PHP页面并与数据库建立了新连接。令我惊讶的是,一切都和我第一次连接时一样

现在,我真的花了大量的时间阅读和四处搜索,据说我做的每件事都很正确。我理解,在完成作业后,必须通过将对象设置为NULL来关闭PDO对象的连接。这样做了,但仍然没有发生任何事情

从我所读的内容来看,所有人和事物都指向$\u SESSION变量,连接必须正确关闭

因此,我尝试从另一台计算机(一个完全不同的系统)登录/连接,导航到我的网页,使用脚本登录,结果是一样的。旧数据不断涌现,我在phpMyAdmin中看到/拥有的完全不同。

所以当我从一个完全不同的位置登录时,我不明白这怎么会成为一个会话问题,只是我页面上的同一个脚本

如果有人能告诉我发生了什么,那就太好了

下面是我用来连接数据库并显示结果的脚本:

<?php

echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>CatId</th><th>Title</th><th>Introtext</th></tr>";

class TableRows extends RecursiveIteratorIterator { 
function __construct($it) { 
    parent::__construct($it, self::LEAVES_ONLY); 
}

function current() {
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
}

function beginChildren() { 
    echo "<tr>"; 
} 

function endChildren() { 
    echo "</tr>" . "\n";
} 
} 

$servername = htmlspecialchars($_POST["hostname"]);
$database = htmlspecialchars($_POST["database"]);
$username = htmlspecialchars($_POST["username"]);
$password = htmlspecialchars($_POST["password"]);
$tab = htmlspecialchars($_POST["tab"]);

try {
$conn = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, catid, title, introtext FROM $tab"); 
$stmt->execute();

// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
    echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

使用
htmlspecialchars()
是一个坏习惯idea@Dagon,你的意思是这可能是问题所在吗?你看到了吗?它向您展示了如何检查是否打开了缓存。您或您的主机是否有可能在出站流量上实现缓存或代理?我想知道结果页本身是否缓存在Web服务器和浏览器之间的某个位置。我没有注意到你的代码中有任何明显的错误。您还可以尝试完全转储
select*from _
的结果,在这里,您只需为调试目的硬编码表名。为此,必须通过脚本提取数据,然后再按ID号排序。使用
htmlspecialchars()
是一种错误的做法idea@Dagon,你的意思是这可能是问题所在吗?你看到了吗?它向您展示了如何检查是否打开了缓存。您或您的主机是否有可能在出站流量上实现缓存或代理?我想知道结果页本身是否缓存在Web服务器和浏览器之间的某个位置。我没有注意到你的代码中有任何明显的错误。您还可以尝试完全转储
select*from
的结果,其中您硬编码表名只是为了调试目的。为此,必须提取数据,然后通过脚本按ID号再次排序。