Perl脚本可以';t访问Demon access数据库以插入、删除或更新,但允许我搜索和显示。帮忙?
我的INSERT、DELETE语句不起作用,我不知道为什么。事实上,我快疯了。请看我附加的scrpits。我一直在使用OpenPerlIDE和Notebook++来对比和处理这些脚本。据我所知,他们没有什么问题,这让我发疯。我已检查数据库的文件权限。我可以搜索数据库中的信息并显示数据库中的所有项目,但我不能插入、删除或更新 在下面找到指向我的页面的链接(当我可以获得一些功能时,页面的格式会更好): 请帮忙Perl脚本可以';t访问Demon access数据库以插入、删除或更新,但允许我搜索和显示。帮忙?,perl,ms-access,scripting,Perl,Ms Access,Scripting,我的INSERT、DELETE语句不起作用,我不知道为什么。事实上,我快疯了。请看我附加的scrpits。我一直在使用OpenPerlIDE和Notebook++来对比和处理这些脚本。据我所知,他们没有什么问题,这让我发疯。我已检查数据库的文件权限。我可以搜索数据库中的信息并显示数据库中的所有项目,但我不能插入、删除或更新 在下面找到指向我的页面的链接(当我可以获得一些功能时,页面的格式会更好): 请帮忙 #!/usr/bin/perl -w use strict; #use DBI; u
#!/usr/bin/perl -w
use strict;
#use DBI;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser); # provide descriptive error messages
use Win32::ODBC; #use ODBC package vs. DBI as in text
print header(); # print out "Content-Type: text/html\n\n"
# Get user's desired action from form
my $action = param('form_action');
# Connect to database
my $db = new Win32::ODBC("DSN=rreAccesscm485a2; UID=cm485a; PWD=kbradford68g")
or die Win32::ODBC::Error();
my $cust_ID;
my $fName;
my $mI;
my $lName;
my $street;
my $city;
my $state;
my $zip_Code;
my $DOB;
my $agent_ID;
my $home_Phone;
my $cell_Phone;
my $profession;
my $employer;
my $referrer;
$cust_ID = param('cust_ID');
$fName = param('first_Name');
$mI = param('mI');
$lName = param('last_Name');
$street = param('street_Name');
$city = param('city');
$state = param('state');
$zip_Code = param('zip_Code');
$DOB = param('DOB');
$agent_ID = param('agent_ID');
$home_Phone = param('home_Phone');
$cell_Phone = param('cell_Phone');
$profession = param('profession');
$employer = param('employer');
$referrer = param('referrer');
my $sql;
$sql = qq{INSERT INTO customer (Customer ID, first_Name, mI, last_Name,};
$sql .= qq{street_Name, city, state, zip_Code, DOB};
$sql .= qq{agent_ID, home_Phone, cell_Phone, profession, employer, referrer)};
$sql .= qq{ VALUES ('$cust_ID','$fName','$mI','$lName','$street','$city',};
$sql .= qq{'$state','$zip_Code','$DOB','$agent_ID','$home_Phone','$cell_Phone',};
$sql .= qq{'$profession', '$employer', '$referrer')};
#print '$sql=' . $sql . "\n";
if ($db->Sql($sql))
{
print "SQL Error: " . $db->Error() . "\n";
print qq(<html><head><title>Database Error</title>
</head>
<body><center><font size="6">Error with database call.</font>
<hr />
<font size="4" color="red">ODBC DB Error</font><br />
<font size="3">Please hit your <b>Back</b> button to re-enter the data and try again.</font></center>
</body>
</html>);
exit;
}
sub Display_Page {
print qq(<html><head><title>Record Added!</title></head>
<body>
<center>
<font size="6">Record Added!</font>
<hr />
<font size="4">
<a href="http://129.2.168.163/cm485a2/project1.html">Back to Main Page</a>
</font><br />
</center>
</body>
</html>);
}
#/usr/bin/perl-w
严格使用;
#使用DBI;
使用CGI qw(:标准);
使用CGI::Carp qw(fatalsToBrowser);#提供描述性错误消息
使用Win32::ODBC#在文本中使用ODBC包与DBI
打印页眉();#打印“内容类型:text/html\n\n”
#从表单中获取用户所需的操作
my$action=param(‘form_action’);
#连接到数据库
my$db=new Win32::ODBC(“DSN=rreAccesscm485a2;UID=cm485a;PWD=kbradford68g”)
或死Win32::ODBC::Error();
我的$cust_ID;
我的$fName;
我的$mI;
我的$lName;
我的$街;
我的城市;
我的$state;
我的$zip_代码;
我的$DOB;
我的$agent\u ID;
我的$home_电话;
我的$手机;
我的职业;
我的雇主;
我的$referer;
$cust_ID=param('cust_ID');
$fName=param('first_Name');
$mI=参数('mI');
$lName=param('last_Name');
$street=param('street_Name');
$city=param(‘city’);
$state=param('state');
$zip_Code=param('zip_Code');
$DOB=参数('DOB');
$agent_ID=param('agent_ID');
$home_Phone=param(“home_Phone”);
$cell_Phone=param('cell_Phone');
$profession=param(“profession”);
$employer=param(“雇主”);
$referer=param(“referer”);
我的$sql;
$sql=qq{插入客户(客户ID、名字、mI、姓氏,};
$sql.=qq{街道名称、城市、州、邮政编码、DOB};
$sql.=qq{代理人ID、家庭电话、手机、职业、雇主、推荐人)};
$sql.=qq{值(“$cust_ID”、“$fName”、“$mI”、“$lName”、“$street”、“$city”、};
$sql.=qq{'$state','$zip_Code','$DOB','$agent_ID','$home_Phone','$cell_Phone',};
$sql.=qq{'$profession','$ENDERY','$REFERER');
#打印“$sql=”$sql。“\n”;
如果($db->Sql($Sql))
{
打印“SQL错误:”..db->Error()。“\n”;
打印qq(数据库错误)
数据库调用出错。
ODBC数据库错误
请按“上一步”按钮重新输入数据,然后重试。
);
出口
}
子显示页面{
打印qq(已添加记录!
记录添加!
);
}
您需要引用客户ID
或更改列名,使其不包含空格
您还必须确保每列后面都有逗号(
,
)。DOB
列名称后缺少它。$sql=qq{INSERT-INTO-customer(custID,firstName,mI,lastName,};$sql.=qq{streetName,city,state,zipCode,DOB};$sql.=qq{agentID,homePhone,mobile,professional,employer,referer)}$sql.=qq{VALUES('$custID'、'$fName'、'$mI'、'$lName'、'$street'、'$city'、};$sql.=qq{'state'、'$zipCode'、'$DOB'、'$agentID'、'$homePhone'、'$phone'、'$phone'、};$sql.=qq{'$professional'、'employer'、'referer');我按照您的建议更改了数据库名称,并删除了如上所示的空格(&下划线),但是,它现在给了我一个[SQL错误:[-3520][1][0]“[Microsoft][ODBC Microsoft Access驱动程序]查询值和目标字段的数量不一样。”但是,数据库调用错误。ODBC DB错误],在我的Access数据库中有15个查询值和15个目标单元格。好的,看了《漂白》,有机会冷静一下。无论如何,我在DOB之后添加了逗号,并找到了另一个需要逗号的地方,现在我得到了以下错误消息:SQL error:[-3703][1][0]“…文本必须包含1个大写字母“C”和7个大于或等于0的数字,数据库调用错误。因此,这条消息的问题在于:我正在这样做。我建立了这个数据库,我知道我必须使用一个C和7个大于或等于0的数字。什么事。感谢所有的指导:)@Mike:您的数据库中内置了某种触发器或约束,它正在生成错误消息。要么是配置错误,要么是您的INSERT
语句的列名与值不一致。好的,请检查:我插入了一个print语句以查看我的字符串,这就是我得到的:$sql=INSERT-INTO-customer(custID,firstName,mI,lastName,streetName,city,state,zipCode,DOBagentID,homePhone,mobile,profession,employer,referer)值(“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”查询值和目标字段的数目不相同。“数据库调用出错。ODBC DB错误是什么???这对SQL注入是开放的。请参阅