【发布时间】:2016-02-26 06:41:23
【问题描述】:
不确定我是否在标题中正确描述了我的问题,但是...
我想获得以下方面的帮助。我在这方面工作的时间比我想说的要长。我正在将一个网站从 MySql 转换为 PDO。 我现在有一个页面,其中包含几个“消息”(视频),当按下“查看”按钮时,它会打开一个新页面并应该播放选定的视频。
一切正常,除了我遇到的问题是,当打开新页面时,我没有加载正确的文件。它正在加载我数据库中的最后一个文件。该 URL 表明正确的“id”号被传递到新页面,即 /webpage.php?id=1、2 3 等。
我花了很长时间才打开页面并实际加载可播放的视频。我已经尝试了很多很多我在这里和其他网站看到的不同选项,但我错过了一些东西。这可能是一个简单的解决方案。 (我承认我只为我的继子维护了这个站点,并且它在 mysql 上运行良好,但我知道我需要更新它,并且根据我所阅读的内容,我应该使用 PDO)。
在您选择要观看的视频的页面上,我有:
public function dataview($query)
{
$stmt = $this->db->prepare($query);
$stmt->execute();
if($stmt->rowCount()>0)
{
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<tr>
<td><button onClick="popUpVid(1024,620,1,'messages.php?id=<?php echo ($row['id'])?>')">View</button></td>
<td><?php echo $row['date']; ?></td>
<td><?php echo $row['description']; ?></td>
</tr>
<?php
}
}
else
{
?>
<tr>
<td>Nothing here...</td>
注意:此页面有“分页(PDO)”,一切正常—— 并在 URL 中传递正确的“id”。
这是我遇到问题的页面: (这里显示了整个页面的代码)
<?php require_once ('connections/myDB.php');
if (($sermonID = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)) !== false && $id > 0) {
// id was passed and it's a valid integer
} else {
// I have nothing here yet, recommendations appraciated)
// evil request, die die
}
try {
$conn = new PDO("mysql:host=$db_host;dbname=$db_name;charset=$charset", $db_name, $db_pass );
foreach ($conn->query('Select * From messages ')as $row){
$row['sermonID'];}
}
catch (PDOException $pe) {
die("Could not connect to the database $dbname :" . $pe->getMessage());
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<video width="640" height="480" poster="images/myImage.jpg" controls="controls" preload="none">
<source type="video/mp4" src='<?php echo $row['fName']; ?>' /></video>
<p><?php echo $row['date']; ?></p>
<p><?php echo $row['description'];?></p><br>
<p>Video files are large. Depending on your connection, they may take a few moments to begin.</p>
<p><button class="w3-btn w3-round-xxlarge w3-white" onClick="window.close()">Close Window</button>
</body>
</html>
<script>
function closeWindow()
{
// Close the current window
window.close();
}
</script>
如上所述,页面按预期加载,正确的“id”显示在 URL 中(myWebSite.com/messages.php?id=4 或 ?id=5、6 等)
但是,视频(以及随之而来的其他信息)始终是数据库中的最后一个条目,而不是数据库中的数字 1、2 或 3 等。
有人可以指导我正确的方向吗?我敢肯定这是我忽略的简单事情,但我已经解决这个问题一个多星期了,我受够了自己,束手无策。我已经尝试过 foreach, while, for 和其他一切都无济于事。
我和我的继子非常感谢任何帮助或为我指明正确的方向。我想我已经提供了足够的信息(代码)并试图尽可能清楚。请回复所需的任何其他信息。
谢谢。
【问题讨论】:
-
您过早关闭 foreach 循环,只留下最后一行显示。另外,我强烈建议您阅读我的PDO tutorial,因为您使用它的方式完全错误。
-
@2-cents tim 很抱歉延迟回来并感谢您的建议(暴风雨袭来并试图将教堂倒塌)。我尝试了上述方法,但现在我收到“警告:为 foreach() 提供的参数无效......一些可能会产生影响的附加信息:host = godaddy, PHP version = 5.2.17 (将升级到5.3 一旦我启动并运行)。mysql API 和 PDO 版本 = 5.0.77。我应该使用准备好的 Stmt 并像我在 YCS 的教程中读到的那样获取列吗?
标签: variables mysqli pdo parameter-passing