쿼리를 대화식으로 확인할 때 하나의 행과 열만 생성하는 mysql- 쿼리를 사용하면 원하는 결과를 볼 수 있습니다. 그러나 내가 사용할 때 $sth->fetchrow_hashref;
나는 undef를 얻는다. 여기에 무엇이 잘못 되었을지 모르는 사람이 있습니까? 어떤 방향 으로든 어떤 점에 대해서 감사드립니다 .y 결과가 나타납니다.dbi는 비어있는 것처럼 undef를 제공하지만 쿼리 결과는 mysql에서 결과를 산출합니다.
sub _get_next_hashref
{
my $self = shift;
if($self->{sth} ne '') {
if(my $hash_ref = $self->{sth}->fetchrow_hashref)
{
return $hash_ref;
} else {
$self->{sth} = '';
return undef;
}
} else {
return undef;
}
}
몇 가지 추가 정보 :
이 직접 실행 후에 완료됩니다 limit 1
와
쿼리 실행 끝, 그렇게 만 항상 하나 개의 행이 있어야합니다. 어떤 이유로 든 더 많은 행이 완벽하게 작동하지만 in-data는 한 행 결과 만 생성하는 데이터가 작동하지 않습니다.
$sql = "select sort_order from forum.metatag_sort where metatag=? order by id desc limit 1";
$self->{sth} = $self->{dbh}->prepare($sql);
if($self->{sth}->execute(@args)) {
return _get_next_hashref();
}
이내 @args는 메타 태그, int입니다.
select count(sort_order) from forum.metatag_sort where metatag=?
이 1보다 큰 답변을 반환하는 경우는 완벽하게 작동하지만이 경우 정확히 1을 반환하는 경우 오류가 발생합니다.
결과를 실제로 생성하는 코드 전체를 보여주십시오. 우리는 보통 투시력이 없습니다. –
우리에게 쿼리와 실행 방법을 보여줍니다. – simbabque
이제'_get_next_hashref' 함수를 실제로 호출하는 코드를 보여줍니다. 또한'$ self -> {sth}'과'ne'를 비교할 필요가 없습니다. '$ self -> {sth}'가 존재하면 true가 될'if ($ self -> {sth})'를 간단히 수행하고 Perl을 정의하고 일반적으로 trueish로 만듭니다. 의미있는 것은 저장된 문장 핸들이 있다면 사실입니다. 빈 문자열은 거짓입니다. –