【问题标题】:Should I use PHP or Perl for massaging my data and storing/retrieving it with MySQL?我应该使用 PHP 还是 Perl 来按摩我的数据并使用 MySQL 存储/检索它?
【发布时间】:2010-09-25 17:09:01
【问题描述】:

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

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

我应该使用 PHP 还是 Perl?

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

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

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

大家会选什么?

感谢你的想法

-杰森

【问题讨论】:

    标签: php mysql perl


    【解决方案1】:

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

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

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

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

    【讨论】:

    • DBIx::Class 和 Rose::DB 可能是目前 Perl 世界中最值得推荐的 ORM。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Perl 的 DBI 与 PHP 的 PDO 或面向对象的 mysqli 非常相似,但如果您从未使用过其中任何一种,现在可能是学习的好时机...

      【讨论】:

      • 我认为 PHP 的 PDO 和 Perl 的 DBI 类似; DBI 比 PDO 长了大约十年。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

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

          在任何一种语言中使用数据库可能都一样容易,因此对于您的应用程序,您必须决定的主要事情是您觉得使用哪种语言处理数据更舒服?

          【讨论】:

            【解决方案7】:

            Perl 可以轻松地与 MySQL 一起工作吗?

            是的,LAMP 曾经是 Linux、Apache、MySQL 和 Perl。业余爱好者改用 PHP :-P。更重要的是,PHP 在过去几年中变得更好,但 Perl 更加成熟,所以如果可以在不影响交付期限的情况下使用它。

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

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

            两者都有安全问题?

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

            Perl 中连接 MySQL 以插入数据的最佳实践?

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

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

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

            【讨论】:

              猜你喜欢
              • 2010-12-25
              • 2011-10-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-12-14
              • 2016-05-25
              相关资源
              最近更新 更多