Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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脚本可以';t访问Demon access数据库以插入、删除或更新,但允许我搜索和显示。帮忙?_Perl_Ms Access_Scripting - Fatal编程技术网

Perl脚本可以';t访问Demon access数据库以插入、删除或更新,但允许我搜索和显示。帮忙?

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

我的INSERT、DELETE语句不起作用,我不知道为什么。事实上,我快疯了。请看我附加的scrpits。我一直在使用OpenPerlIDE和Notebook++来对比和处理这些脚本。据我所知,他们没有什么问题,这让我发疯。我已检查数据库的文件权限。我可以搜索数据库中的信息并显示数据库中的所有项目,但我不能插入、删除或更新

在下面找到指向我的页面的链接(当我可以获得一些功能时,页面的格式会更好):

请帮忙

#!/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注入是开放的。请参阅