Perl + POO和Mysql错误 [英] Perl + POO and Mysql error
问题描述
我刚刚学习了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屋!