Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用perl脚本将表单数组从URL插入DBD数据库?_Perl_Postgresql_Psql - Fatal编程技术网

如何使用perl脚本将表单数组从URL插入DBD数据库?

如何使用perl脚本将表单数组从URL插入DBD数据库?,perl,postgresql,psql,Perl,Postgresql,Psql,我试图使用perl脚本在html到DBD数据库中填充数据 以下是我的html代码: <html> </head> <body> <H1>Friend's contact book</H1> <FORM ACTION="contact.pl" METHOD="POST"> <HR> <H2>Friend's contact</H2> <PRE> N

我试图使用perl脚本在html到DBD数据库中填充数据

以下是我的html代码:

<html>
</head>


<body>
<H1>Friend's contact book</H1>

<FORM ACTION="contact.pl" METHOD="POST">


<HR>
<H2>Friend's contact</H2>

<PRE>
          Name:<INPUT TYPE="text" NAME="name"> 
         Address:<INPUT TYPE="text" NAME="add"> 


</PRE>

</HR><P>
<INPUT TYPE="submit" VALUE="Sign Up"> or <INPUT TYPE="reset" VALUE="Cancel">
</P>
</FORM>
</body></html>
我无法运行contact.pl代码 上面写着“内部服务器错误”

有什么我可以纠正的吗

提前多谢

多谢各位 我已经像你说的那样编辑了代码,但是它有错误 更新后: 内部服务器错误

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

Premature end of script headers: /home/friendcontact/private/cgi-bin/contact.pl

您不必
执行准备好的句柄。准备并执行:

$stat = $dbh->prepare( "INSERT into friend (name, add) VALUES(?,?)" );
$stat->execute( $name, $add);
我假设您有其他代码来设置
$name
$add
变量,因为它不会自动发生


编辑:你还有其他问题。不要在调用
execute
时引用变量。并且它的
在insert语句中

您不需要
做一个准备好的句柄。准备并执行:

$stat = $dbh->prepare( "INSERT into friend (name, add) VALUES(?,?)" );
$stat->execute( $name, $add);
我假设您有其他代码来设置
$name
$add
变量,因为它不会自动发生


编辑:你还有其他问题。不要在调用
execute
时引用变量。以及insert语句中的
值。首先,您需要将Perl错误定向到浏览器,以便进行调试。这是通常的方式,但如果不看到代码中的CGI部分,就很难知道:

use CGI::Carp qw(fatalsToBrowser);
您可能还需要更改服务器上的设置

除此之外,这里还有几个问题。我认为这需要
而不是

$stat = $dbh->prepare( "INSERT into friend (name, add) VALUE 
(?,?)");
此外,这是不正确的:

$stmh->execute('$name','$add');
占位符与胸径一起使用时,不需要引用变量;它在内部为您处理这些问题。即使考虑到这一点,您也使用了单引号,这意味着您没有传入变量,而只是传递文本字符串
'$name'
'$add'
。只需这样做:

$stmh->execute($name,$add);
这只是一个开始;这里可能还有更多


更新:由于在使用变量之前未声明变量,因此也会出现错误。您应该使用
my$var。这使得它成为一个词汇变量,而不是一个全局变量。这是一个很好的实践,因为你说
要严格使用(这是一件非常好的事情),它也是一种必需的实践。

首先,您需要将Perl错误定向到浏览器,以便进行调试。这是通常的方式,但如果不看到代码中的CGI部分,就很难知道:

use CGI::Carp qw(fatalsToBrowser);
您可能还需要更改服务器上的设置

除此之外,这里还有几个问题。我认为这需要
而不是

$stat = $dbh->prepare( "INSERT into friend (name, add) VALUE 
(?,?)");
此外,这是不正确的:

$stmh->execute('$name','$add');
占位符与胸径一起使用时,不需要引用变量;它在内部为您处理这些问题。即使考虑到这一点,您也使用了单引号,这意味着您没有传入变量,而只是传递文本字符串
'$name'
'$add'
。只需这样做:

$stmh->execute($name,$add);
这只是一个开始;这里可能还有更多


更新:由于在使用变量之前未声明变量,因此也会出现错误。您应该使用
my$var。这使得它成为一个词汇变量,而不是一个全局变量。这是一个很好的实践,因为你说
要严格使用(这是一件非常好的事情),这也是一项必要的实践。

非常感谢我按照您所说的那样编辑并列出了浏览器给出的错误列表谢谢您的评论,但在更改所有变量后,它碰巧有内部错误error@userpane,这是一条一般性错误消息,表示您的脚本没有向服务器发送任何输出。可能是在编译的早期出现了故障。也可能是脚本成功了,但没有发送任何html输出。要测试后一种情况,请尝试放置
die“scriptfinished!”在脚本的末尾。如果您在浏览器中收到该消息,这意味着您成功了,您只需要返回一些输出。如果你没有得到消息,那是另外一个错误——没有简单的方法知道它是什么。我已经把
die“脚本完成了!”显示如下
软件错误:脚本完成!在/home/friendscontact/private/cgi-bin/contact.pl行。
这是应该得到的吗?非常感谢我按照您所说的那样编辑并列出了浏览器给出的错误列表谢谢您的评论,但是在更改所有变量后,它碰巧有内部错误error@userpane,这是一条一般性错误消息,表示您的脚本没有向服务器发送任何输出。可能是在编译的早期出现了故障。也可能是脚本成功了,但没有发送任何html输出。要测试后一种情况,请尝试放置
die“scriptfinished!”在脚本的末尾。如果您在浏览器中收到该消息,这意味着您成功了,您只需要返回一些输出。如果你没有得到消息,那是另外一个错误——没有简单的方法知道它是什么。我已经把
die“脚本完成了!”显示如下
软件错误:脚本完成!在/home/friendscontact/private/cgi-bin/contact.pl行。
这是应该得到的吗?