对不起我的英语不好。
我对数据库的了解非常简单。
我必须从论坛获得此代码。
我的问题是,当有人发表评论时,它会显示在所有网站上,而我希望它只显示在发表评论的文件上。
我尝试用...来解决这个问题。
我有两个文件,一个是 Php 代码,代码.php然后是另一个显示评论的地方,评论.php。
在评论.php文件位于上方,
include '/var/www/html/code.php';
以及评论显示的位置
<?php $object = new ClassProveContakt3("1");?>
在代码.php上面的顶部,将属性声明为$site
,
private $site;
这函数__construct($site)带有参数$站点,我称之为,
public function __construct($site) {
$this->site->$site;
...
更新时评论.php页面,即将推出二警告,
1)
尝试获取 /var/www/html/code.php 第 35 行中非对象的属性“1”
35 号线上有$this->site->$site;
2)
未定义变量:/var/www/html/code.php 中第 164 行的站点
164行有$sth -> execute( array(':site' => $site ));
,
它是连接数据库的函数,这个函数,
function getMessages()
{
if ( ! $this -> dbh ) {
$this -> getConnection();
}
$sql = "SELECT * FROM commentar WHERE site = :site ORDER BY datetime DESC";
$sth = $this->dbh->prepare( $sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ));
$sth -> execute( array(':site' => $site ));
$result = $sth->fetchAll(PDO::FETCH_ASSOC );
if ( false === $result ) {
$this->reportPDOError( "fetchAll(ASSOC) failed", $sql );
}
foreach ($result as $message) {
?>
<p><strong>From: </strong> <?=htmlspecialchars( $message['name'] ) ?>
<strong>at: </strong> <?=htmlspecialchars( $message['datetime'] ); ?></p>
<p><?=htmlspecialchars( $message['message'] ); ?></p><hr>
<?php
}
}
}
所有代码来自代码.php是这里
有人可以帮我解决这个问题吗?谢谢!
答案1
我“找到”了解决方案,人们给我解决方案,但我也去搜索......
在 comment.php 上
在评论.php文件位于上方,
include '/var/www/html/code.php';
去掉它。
并在评论显示处进行更改
<?php $object = new ClassProveContakt3("1");?>
到
include_once '/var/www/html/code.php';
由于使用包含一次并不是包括 这里说说为什么。
在 code.php 上
排队163改变自
$sth -> execute( array(':site' => $site ));
到
$sth -> execute( array(':site' => $_SERVER['REQUEST_URI'] ) );
为什么是 $_SERVER['REQUEST_URI'] ?,因为 php说关于'请求 URI',访问此页面所需的 URI。我希望该评论仅显示在它写入的文件上。也就是说,当 site = 我所在的地方时.....在此处写入。
排队183改变自
$Newobject = new ClassProveContakt3();
到
$Newobject = new ClassProveContakt3($_SERVER['REQUEST_URI']);
为什么是 $_SERVER['REQUEST_URI']?,当评论.php文件调用$新对象对象,它是范围发送到评论.php
我感谢所有帮助我解决这个问题的人!