Perl + POO和Mysql错误 [英] Perl + POO and Mysql error

查看:73
本文介绍了Perl + POO和Mysql错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚学习了poo,我开始玩perl,实现了这一点,但是我没有得到预期的输出,mysql问题呢?还是错误的代码?另外,同一查询在控制台和工作台上运行,并且此模块添加chmod + x module.pm

I just learned poo and i got to play with perl, achieved this but I do not get the expected output, problem with mysql? Or bad code?. other thing, the same query runs on console and workbench, and this module add chmod +x module.pm

#!/usr/bin/perl
use warnings;
use strict; 
use DBI;
use DBD::mysql;
package MysqlTest;

sub new{
    my $class = shift;
    my $query={};
    bless($query, $class);
}
sub conexion{
    my $self=shift;
    my($database, $host, $user, $pwd)=@_;
    my $connect = DBI->connect("DBI:mysql:$database:$host", $user, $pwd) or die $DBI::errstr;;
    $self->{"host"}="$host";
    $self->{"database"}="$database";
    $self->{"user"}="$user";
    $self->{"pass"}="$pwd";
    my $mysqlopen = 1;
return;
}
sub consulta{
    my $self=shift;
    if (!$mysqlopen) { &conexion; }
    my $id = "SELECT * FROM save_bookmarks WHERE id='123'";
    $result = $connect->prepare($id);
    $result->execute();
    my @resultado = $result->fetchrow_array();
    print "@resultado\n";
    return;
}
sub datos{
    my $self=shift;
    print "::DATOS DE ACCESO::\n";
    while (($key, $value)=each(%$self)){
        print "$key => $value\n";
    }
}
1;

此文件称为方法和创建的对象.添加到chmod + x file.pl,但我不知道,什么不起作用?

this file called method and created object. add to chmod +x file.pl , but i don't know, whats not work?

#!/usr/bin/perl

use MysqlTest;
use warnings;
use strict;

my $mysqltest = MysqlTest->new();
$mysqltest->conexion("bookmarks", "localhost", "root", "pass");
$mysqltest->consulta();

控制台中的输出

DBI connect(':','',...) failed: Access denied for user 'delkav'@'localhost' (using password: NO) at MysqlTest.pm line 17.
Access denied for user 'delkav'@'localhost' (using password: NO) at MysqlTest.pm line 17.

有什么主意吗?

推荐答案

OO本身是正确的.

错误消息来自MySQL,拒绝用户'delkav'的访问,但是我要连接的用户是'root'.

The error message comes from MySQL, denying access for the user 'delkav', but I the user you want to connect with is 'root'.

无论如何,似乎您的DBI-> connect()行是错误的.要遵循 DBD :: mysql文档,您必须更改行:

Anyway, seems your DBI->connect() line is wrong. To follow the DBD::mysql docs, you must change your line:

my $connect = DBI->connect("DBI:mysql:$database:$host", $user, $pwd) or die $DBI::errstr;

my $connect = DBI->connect("DBI:mysql:database=$database;host=$hostname;", $user, $pwd) or die $DBI::errstr;

这篇关于Perl + POO和Mysql错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆