#!/usr/bin/perl use strict; use JSON; use CGI::Carp qw(fatalsToBrowser); use DBI; require 'cgi-lib.pl'; print "Content-type: text/html\n\n"; my $in=&ReadParse; my $str_js=$in->{cmd}; my $user = 'root'; my $passwd = ''; my $db = DBI->connect('DBI:mysql:test:localhost', $user, $passwd); #print $db; my $cmd = decode_json( $str_js ); if ($cmd->[0] eq 'GET') { my $data=$cmd->[1]; my $where=&where($data->{where}); my $ord=&orderBy($data->{orderBy}); my $query=qq( select * from $data->{from} $where $ord ; ); my $sth = $db->prepare($query); $sth->execute; my $num_rows = $sth->rows; my $res=[]; for (my $i=0; $i<$num_rows; $i++) { my $a = $sth->fetchrow_hashref; $a->{_class}=$data->{from}; push @{$res}, $a; } $sth->finish; $db->disconnect; print encode_json($res); } elsif ($cmd->[0] eq 'POST' or $cmd->[0] eq 'PUT' ) { my $data=$cmd->[1]; my $values=&values($data); my $query =qq( insert into $data->{_class} $values ; ); my $sth=$db->prepare($query); my $res=$sth->execute; if ($res) { print encode_json(["OK"]); } else { print encode_json(["Fail : ".$sth->errstr]); } } sub values { my $d=shift; my @names; my @values; while (my ($k,$v)=each %{$d}) { push @names, $k; push @values, "'$v'" ; } " (".join(", ",@names).") values (".join(", ",@values).")"; } sub where { my $w=shift; my @res; while (my ($k,$v)=each %{$w}) { push @res, "$k='$v'" ; } if (@res==0) {return ""} "where ".join(" and ",@res); } sub orderBy { my $ord=shift; if ($ord) {" order by $ord ";} else {"";} }