基于Perl的PHP/MySQL表搜索

基于Perl的PHP/MySQL表搜索,php,mysql,perl,Php,Mysql,Perl,由于对perl/MySQL理解不够,我希望这里的人能伸出援助之手。 代码显然不起作用,但这是我目前掌握的,我还在学习 我想打开并搜索一个数据库,查找从php页面获取的$ticket\u id,并获取一个或两个电子邮件地址和/或电话电子邮件(如果有该$ticket\u id)。至少会有一个 因为我似乎每隔一段时间就会被问到这个问题。(这不是学校的项目,我75岁就辍学了) 我的脚本用于数据库查找信息,但我必须用票证id和电子邮件地址手工对每个设置进行编码。很高兴我只有5个人在使用它,但是有人问我是否

由于对perl/MySQL理解不够,我希望这里的人能伸出援助之手。 代码显然不起作用,但这是我目前掌握的,我还在学习

我想打开并搜索一个数据库,查找从php页面获取的
$ticket\u id
,并获取一个或两个电子邮件地址和/或电话电子邮件(如果有该
$ticket\u id
)。至少会有一个

因为我似乎每隔一段时间就会被问到这个问题。(这不是学校的项目,我75岁就辍学了)

我的脚本用于数据库查找信息,但我必须用票证id和电子邮件地址手工对每个设置进行编码。很高兴我只有5个人在使用它,但是有人问我是否愿意使用它。因此,我认为这将是一个很好的时间来流式处理使用MySQL数据库的过程,如果我忙于此项工作,我将不必做太多工作,只需填写一个表单页面来添加他们的信息

在需要搜索的数据库中有3个表,我需要搜索ticket_id,然后获取用户名,即他们的电子邮件地址和/或电话电子邮件,但根据他们想要的通知类型,其中任何一个都可能为空

这可以根据需要进行更改。它只有一条记录可用于此新设置

username:  email(at)address(dot)com
ticket_id: 1-YS25UHRN3N9D
phone: 1234567890(at)cellphone(dot)com
我被告知这可以通过JavaScript window.onload完成,所以不需要将HTML页面更改为PHP,但我根本不懂JavaScript

echo脚本可能是错误的<代码>$pg此时被脚本很好地接收,不需要任何
echo

PHP页面顶部

<?php
  $ip = $_SERVER['REMOTE_ADDR']; // Client IP address
  $pg = $_SERVER['HTTP_REFERER']; // What page did they view
  $ticket_id = '1-YS25UHRN3N9D'; // Ticket id
  $message = '1'; // 1=email, 2=text, 3=email & text
  $url = "/cgi-bin/log_it.cgi"; // back-end url
echo '<script type="text/javascript" src="' . $url . '?id=' . $id . '&amp;ip=' . $ip 
.  '?ticket_id=' . $ticket_id . ' . '?message=' . $message . '"></script>';
?>

您的帖子中似乎没有问题。你说“代码显然不起作用”,但你没有告诉我们你看到了什么样的意外行为。下面是对代码的一些注释。其中一个可能会解决这个问题

1/在shebang线上应为“-w”,而不是“-w”。事实上,现在你应该删除“-w”并包含
use警告就在shebang线下方

2/您还应添加
使用strict就在
下面使用警告。这似乎会完全破坏您的程序,因为它会要求您预先删除所有变量—您可以使用
my
my$host='localhost'
,等等)执行此操作。这一开始会很痛苦,但这是一个很好的习惯

3/您只需要一个
使用CGI
行。并且应该
使用CGI qw/param/

4/您正在使用一个名为Mysql的类。但是你不会在任何地方加载这个类。那个班是从哪里来的?您真的应该使用and的组合

5/您将一个SQL查询放入
$myquery
中,然后立即用另一个SQL查询覆盖它。这不会导致错误——这可能只是表明您有些困惑

6/您的
if($id=~/$ticket\u id/)
几乎可以肯定,作为
if($id==$ticket\u id)
编写会更好。如果只是比较两个数字,就不需要使用正则表达式

7/您应该真正检查调用
open
的返回值

open(FILE, ">$file") or die $!;
事实上,我已经重写了它,使用3-arg open和一个自动激活的文件句柄

open(my $fh, '>', $file) or die $!;
然后,您需要在整个代码中将
文件
更改为
$fh

8/同样,您与
$message
的三次比较可能只是简单的
=
匹配,而不是使用正则表达式匹配


如果你打算做很多这方面的工作,那么我真的建议你读一本好书,比如《学习Perl》或《开始Perl》。

为什么不在PHP方面做这些呢?为什么要使用cgi脚本?为什么要用JS调用它。。。您应该从php端使用curl。@prodigitalson,因为让用户复制和粘贴超过6行的内容容易出错。我五分之二都得这么做。如果我允许其他人使用该设置,我不希望他们在其网站上拥有所有内容。php是有人给我的。所以你问了一个我没有答案的问题。那么这些都是在一台服务器上运行还是跨多台服务器运行?你最擅长的语言是什么?如果看不到清理过的代码,我真的帮不了你。也许您可以将当前代码作为原始文章的更新发布。尽管我将指出,如果您花时间仔细阅读Perl的错误消息,通常会有很多意义。如果没有,请尝试向代码中添加
use diagnostics
。这样,别人的评论看起来就不会错。我编辑了您的帖子以更正此问题。如果您的票证ID是字符串而不是数字,则需要使用
eq
而不是
==
。如果您切换到使用DBI/DBD::mysql而不是mysql.pm,则需要更改连接数据库的方式。有关详细信息,请参阅DBI文档。
open(FILE, ">$file") or die $!;
open(my $fh, '>', $file) or die $!;