免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1891 | 回复: 9
打印 上一主题 下一主题

[请问]mysql.pm centos6.3 中perl 无法调用mysql [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-04 14:53 |只看该作者 |倒序浏览
大家好,我搜了很多答案,而且我看到我已经安装了perl-DBD-MYSQL
但还是出现这样的情况。
请大家帮忙,谢谢。
use strict;
use Mysql;  // 这里提示 Can't locate Mysql.pm in @INC (@INC contains: /usr/local/lib64/perl5
use IO::File;
use File::Basename;
use utf8;
no utf8;

my $scriptName = "apply_license_from_localfile";
my $logseqnum = 0;
my $logFileH;


my ($localfile) = @ARGV;

my $host = "localhost";
my $dbname = 'henduo';

my $user = 'henduouser';
my $passwd = 'henduo';

my $dbh = Mysql->connect($host, $dbname, $user, $passwd);

论坛徽章:
0
2 [报告]
发表于 2014-04-04 15:02 |只看该作者
我先用 perl -MCPAN -e shell
重新安装一下 DBI 和  DBD-Mysql 试试

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
3 [报告]
发表于 2014-04-04 15:02 |只看该作者
本帖最后由 laputa73 于 2014-04-04 15:07 编辑

use DBI;

不用use Mysql;

论坛徽章:
0
4 [报告]
发表于 2014-04-04 15:09 |只看该作者
laputa73 发表于 2014-04-04 15:02
use DBI;

不用use Mysql;


好的 我试试

论坛徽章:
0
5 [报告]
发表于 2014-04-04 15:20 |只看该作者
我改写成了 use DBI
然后连接数据库
出现不能用原来的 ->query 方法, 我就改成了->prepare, 用于 select


结果出现 错误   
DBD::mysql::st fetchrow failed: fetch() without execute()

我的代码 是这样的:
  1. $sth = $dbh->prepare("select value from henhao where name='$type'");
  2.                 $row = $sth->fetchrow;
  3.                 if (!$row){
  4.                         print "No such type, please check whether you made a typo\n!" ;
  5.                         exit(-1);
  6.                 }
  7.         }
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
6 [报告]
发表于 2014-04-04 15:22 |只看该作者
回复 5# wnpers

prepare
execute
fetch

你没有 执行 就 fetch, 那能 fetch 到啥呢?
   

论坛徽章:
0
7 [报告]
发表于 2014-04-04 15:38 |只看该作者
q1208c 发表于 2014-04-04 15:22
回复 5# wnpers

prepare


非常感谢,应该在prepare语句后面添加 $sth->execute();

所以最后代码应该是
  1. $sth = $dbh->prepare("select value from henhao where name='$type'");
  2.                 $sth->execute();//添加的执行语句。
  3.                 $row = $sth->fetchrow;
  4.                 if (!$row){
  5.                         print "No such type, please check whether you made a typo\n!" ;
  6.                         exit(-1);
  7.                 }
  8.         }
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-04-04 19:42 |只看该作者
回复 6# q1208c


    请问,我如何得到值呢??
使用 $sth->rows;  还是 $res->fetchrow  ?? 或者别的方法,我就想得到数据库中得到的值

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
9 [报告]
发表于 2014-04-04 21:04 |只看该作者
单条记录单个值
$a = $sth->fetchrow();

多条记录多个值
  1.     while (my $ref = $sth->fetchrow_arrayref())
  2.     {
  3.         $a = $ref->[1];
  4.         $b = $ref->[2];
  5.     }
复制代码
或者用hash
  1. my $ref=$sth->fetchrow_hashref();
  2.     my $a =$ref->{'a'};
复制代码

论坛徽章:
0
10 [报告]
发表于 2014-04-11 10:15 |只看该作者
回复 9# laputa73

非常感谢。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP