【发布时间】:2011-02-07 19:13:49
【问题描述】:
我有两个页面,一个在 php(index.php) 中,另一个在 Perl(dbcon.pl) 中。
基本上我希望我的 php 文件只显示 UI,所有数据操作都将在 Perl 文件中完成。
我试过了 在 index.pl 中
<?php include("dbcon.pl");?>
<html>
<br/>PHP</br>
</html>
而 dbcon.pl 有
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use CGI::Simple;
my $cgi = CGI::Simple->new;
my $dsn = sprintf('DBI:mysql:database=%s;host=%s','dbname','localhost');
my $dbh = DBI->connect($dsn,root =>'',{AutoCommit => 0,RaisError=> 0});
my $sql= "SELECT * FROM products";
my $sth =$dbh->prepare($sql);
$sth->execute or die "SQL Error: $DBI::errstr\n";
while (my @row = $sth->fetchrow_array){
print $cgi->header, <<html;
<div> @row[0] @row[1] @row[2] @row[3] @row[4]</div>
html
}
但是当我在浏览器中运行 index.php 时,它会打印 dbcon.pl 文件中的所有代码而不是执行它
如何解决这个问题?
注意:我是在windows环境下运行的
还有其他方法吗?
【问题讨论】:
-
在使用工具之前,您确实应该了解所使用工具的基本原理。我不想粗鲁,但是这个问题几乎是在尖叫“我不知道解释语言是如何工作的”,所以虽然你可以遵循下面的一些答案(它们已经足够好了),但你会遇到更大的问题不久的将来。
-
我会记住的,谢谢
-
我也很抱歉听起来很粗鲁,但您似乎真的以您决定使用的方式对此下定了决心,并且顽固地拒绝以任何不同的方式这样做。在我看来,在如此奇怪的组合中使用 Perl 和 PHP 绝对是零理由,而且您似乎无法清楚地表达实际的 动机 去你的方式,除了像“我真的有只能这样做”。
-
我猜他想用php作为模板系统所以我已经回答了。我认为这已经被过度修改了,因为这是可能的。不过我不同意。您应该使用 perls 模板系统之一,例如 Template Toolkit、Mason、HTML::Zoom 以及一些我知道我忘记的其他模板系统。
-
看起来他也不知道自己在做什么以及为什么 - 这可以解释大量的降级。