我在php(index.php)中有两个页面,在Perl(dbcon.pl)中有另一个页面.
基本上我希望我的php文件只显示UI,所有数据操作都将在Perl文件中完成.
我试过index.pl
<?php include("dbcon.pl");?>
<html>
<br/>PHP</br>
</html>
Run Code Online (Sandbox Code Playgroud)
和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
}
Run Code Online (Sandbox Code Playgroud)
但是当我在浏览器中运行index.php时,它会打印dbcon.pl文件中的所有代码而不是执行它
如何克服这个问题?
注意:我在Windows环境中运行它
还有其他办法吗?
请问问题到底是什么?我在Perl代码中看不到任何"特殊",所以你要么:
a)不知道如何从PHP访问您的数据库(即您不了解PHP)或
b)不知道Perl在做什么(即你不知道Perl)或
c)可能你的环境已经设置好了,你可以使用Perl DBI但你不能用PHP做同样的事情.
这个链接应该指导您直接从PHP执行您在Perl中执行的操作.您可以轻松找到各种PHP/DB组合的几十个示例.
唯一的另一种方法是做另一张海报建议的内容:调用Perl脚本并解析结果(打印到标准输出).
这是rubygoldbergsque,脆弱且不可接受的解决方案,除非你绝对不顾一切地使用只能作为Perl模块使用的东西(你发布的例子不是这种情况).
一般来说,如果你想用一种语言完成某些事情并从其他语言中使用它,那么最好的办法就是将(在你的情况下)Perl作为一种"服务器"运行,即一个单独的过程 - 然后制作它使用XML-RPC或其他一些轻量级协议公开服务.
用exec()或类似结构调用程序是非常糟糕的做法.
| 归档时间: |
|
| 查看次数: |
5467 次 |
| 最近记录: |