免费注册 查看新帖 |

Chinaunix

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

DBI如何判断数据表中某字段是否存在 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-27 14:29 |只看该作者 |倒序浏览
用DBI模块连接mysql,要查询表中某字段是否存在,该怎么实现?

比如:表结构为
id              type
apple        fruit
banana     fruit
potato      vegetable

判断表中是否已经存在apple。谢谢大家了!

论坛徽章:
0
2 [报告]
发表于 2009-08-27 14:40 |只看该作者
select 1 from balabal where id = 'apple'

论坛徽章:
0
3 [报告]
发表于 2009-08-27 15:04 |只看该作者

回复 #2 DQP 的帖子

这个是SQL语句,可能我没有说清楚,我想在perl里实现这个,我的perl是这样写的:

use DBI;
use strict;

my $dbh = DBI->connect($dsn,$user,$passwd,{RaiseError=>1});
my $sth = $dbh->prepare("SELECT id FROM table1 WHERE id='orange") or
                die("Cannot prepare statement:",$dbh->errstr(),"\n");
$sth->execute() or die("Cannot execute statement:",$sth->errstr(),"\n");

if ($sth) {
        my $ref = $sth->fetchrow_array;
        print "$ref\n";
}
else {
        print "orange is not exist.\n";
}
$sth->finish();
$dbh->disconnect();

运行后的结果应该是输出: orange is not exist.
可实际的结果是空的,什么都没有。

还是我这样写不对呢?

论坛徽章:
0
4 [报告]
发表于 2009-08-27 15:22 |只看该作者
if ($sth) {
        my $ref = $sth->fetchrow_array;
        print "$ref\n";
}
else {
        print "orange is not exist.\n";
}
你这里是执行的上面的分支,所以什么都没有。
if ($sth) 是为真的

论坛徽章:
0
5 [报告]
发表于 2009-08-27 15:30 |只看该作者

回复 #4 Perl_Er 的帖子

这个就是我的问题所在了,如果不是判断$sth,
应该用什么方法来判断得出orange不存在并返回一个boolean值呢?

论坛徽章:
0
6 [报告]
发表于 2009-08-27 15:55 |只看该作者
就在这里判断:$ref = $sth->fetchrow_array;
这个不是你查询的结果吗,从结果里面看有没有就可以了嘛

论坛徽章:
0
7 [报告]
发表于 2009-08-27 16:28 |只看该作者
哦,是这样的,可以实现了。
多谢Perl_Er 的耐心指点!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP