我应该使用PHP或Perl来按摩我的数据并使用MySQL存储/检索它吗?

时间:2008-12-07 01:28:43

标签: php mysql perl

我有一个需要将数据发送到MySQL服务器的桌面应用程序。该应用程序将供公司内部使用,但MySQL位于托管公司的服务器上。

在插入和标准的简单插入,删除和更新之前,需要对数据进行一些按摩。

我应该使用PHP或Perl?

我现在将PHP用于各种数据库驱动的网页,但我当前的任务不需要任何网络渲染。 (我知道PHP可以在没有网络渲染的情况下实现这一点)

我过去(可能是4年前)使用Perl进行数据挖掘任务和Oracle。

我不知道的事: - Perl可以轻松使用MySQL吗? - Perl脚本会放在网络服务器上的cgi-bin中,对吗? - 两者的安全问题? - Perl中连接MySQL以插入数据的最佳实践? - 我在哪里可以存储插入,更新,删除MySQL用户名和密码,以免被盗等?

你们都会选择什么?

赞赏的想法

-Jason

7 个答案:

答案 0 :(得分:15)

Perl的DBI模块非常强大,可以通过使用绑定参数轻松避免SQL注入攻击。有关在SQL语句中使用占位符的详细信息,请参阅“perldoc DBI”。通过将凭据放在读保护文件中,可以使用正常的Unix文件保护来保护数据库的用户名/密码。

DBIx::ClassClass::DBI模块提供了将整个数据库和关系映射到Perl对象的方法。它使得快速遍历数据库变得非常容易,在此过程中生成安全代码而无需编写单行SQL。这comparisons of Class::DBI and DBIx::Class可以帮助您选择哪一个;和往常一样,there is more than one way to do it。如果您正在寻找整个框架,Rose库会提供Rose::DB::Object来简化访问。

您可以从命令行或cgi-bin目录运行Perl脚本。

[感谢draegtun了解其他数据库包装器类的建议]

答案 1 :(得分:9)

两者都可以正常使用MySQL。这真的只是一种偏好和舒适度。既然你说你用PHP做了很多,那么对你来说可能会更有效率。

答案 2 :(得分:2)

Perl的DBI与PHP的PDO或面向对象的mysqli非常相似,但如果你现在从未使用过,那么现在可能是学习它的好时机......

答案 3 :(得分:2)

Perl,因为DBI更加成熟并且拥有更多的基础设施。但是如果你确定你会坚持使用mysql,那么来自PHP的“普通”绑定已经过很好的测试,并被大多数PHP数据库程序员使用。

答案 4 :(得分:2)

PHP从命令行运行良好。如果这是你熟悉的,更重要的是公司熟悉的东西(想想谁必须在你之后维护它)。

答案 5 :(得分:1)

如果您熟悉使用PHP编写Web应用程序,则您已经知道如何使用它编写控制台应用程序。

唯一的区别是你输出的是纯文本而不是HTML,以及一些包含命令行参数的新超级全局$ argc和$ argv。

如果您使用PDO或MySQLi类,则可以使用参数化或准备好的查询。

在这两种语言中使用数据库可能同样容易,因此对于您的应用程序,您必须决定的主要事情是使用哪种语言更舒适?

答案 6 :(得分:0)

Perl可以轻松使用MySQL吗?

是的,LAMP曾经是Linux,Apache,MySQL和Perl。业余爱好者使用PHP代替:-P。更严重的是,PHP在过去几年里变得更好,但是Perl更加成熟,所以如果你能这样做就可以使用它,而不会影响交付截止日期。

Perl脚本会放在网络服务器上的cgi-bin中,对吗?

只要您的Web服务器可以访问并执行脚本,它就可以进入您喜欢的任何目录。 cgi-bin目录的存在只是将静态页面与动态页面分开的努力。简单地说,如果您的网络服务器可以从目录运行PHP,它也应该能够从那里运行Perl。

安全问题?

尽量不要编写易受SQL注入攻击的SQL; NOT 使用旧的PHP mysql_函数,改为使用PDOmysqli_函数。使用PHP和PERL,使用绑定变量并检查所有输入。

Perl中连接MySQL以插入数据的最佳做法?

使用Perl DBI库,它非常成熟,如果与绑定变量一起使用,则会限制执行SQL注入攻击的能力。

我在哪里可以存储插入,更新,删除MySQL用户名和密码,以免被盗等?

简单地说,你无法给予绝对的保证。创建一个具有程序运行所需的最小权限的MySQL用户。即用户不应该有权删除表,删除数据库等。您可以将数据库相关代码放在Web服务器可访问的目录之外,以防止随意下载关键文件。