# Selima Website Content Management System # FetchRec.pm: The subroutine to fetch a record from a database table. # Copyright (c) 2004-2018 imacat. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Author: imacat # First written: 2004-09-28 package Selima::FetchRec; use 5.008; use strict; use warnings; use base qw(Exporter); use vars qw(@EXPORT @EXPORT_OK); BEGIN { @EXPORT = qw(fetchrec); @EXPORT_OK = @EXPORT; # Prototype declaration sub fetchrec(\$$); } use Selima::ChkFunc; use Selima::DataVars qw($DBH :lninfo); use Selima::GetLang; # fetchrec: Try to fetch a record by its serial number sub fetchrec(\$$) { local ($_, %_); my ($sn, $table, $sth, $sql, %row); ($sn, $table) = @_; return if !check_sn $$sn; $sql = "SELECT * FROM " . $DBH->quote_identifier($table) . " WHERE sn=$$sn;\n"; $sth = $DBH->prepare($sql); $sth->execute; return if $sth->rows != 1; %row = %{$sth->fetchrow_hashref}; # Hash the multi-lingual columns $row{$_} = $row{$_ . "_" . getlang LN_DATABASE} foreach $DBH->cols_ml($table); return %row; } return 1;