@@ -604,7 +604,7 @@ class GenericQueryBuilder {
604604
605605 for ( let k in field ) {
606606 let like_statement ;
607- const v = field [ k ] ;
607+ let v = field [ k ] ;
608608 k = this . _protect_identifiers ( k . trim ( ) ) ;
609609
610610 // Make sure value is only string, number, or boolean
@@ -616,17 +616,32 @@ class GenericQueryBuilder {
616616 throw new Error ( "like(): You have provided an invalid number value as the second parameter. Only valid strings, numbers, and booleans are allowed." ) ;
617617 }
618618
619+ // Make sure to escape the value...
620+ v = this . _qb_escape ( v ) ;
621+
619622 if ( side === 'none' ) {
620- like_statement = k + not + ' LIKE ' + "'" + v + "'" ;
623+ like_statement = k + not + ` LIKE ${ v } ` ;
621624 }
622625 else if ( side === 'before' || side === 'left' ) {
623- like_statement = k + not + ' LIKE ' + "'%" + v + "'" ;
626+ if ( typeof v === 'string' ) {
627+ like_statement = k + not + ` LIKE ${ v . substr ( 0 , 1 ) } %${ v . substr ( 1 ) } ` ;
628+ } else {
629+ like_statement = k + not + ` LIKE %${ v } ` ;
630+ }
624631 }
625632 else if ( side === 'after' || side === 'right' ) {
626- like_statement = k + not + ' LIKE ' + "'" + v + "%'" ;
633+ if ( typeof v === 'string' ) {
634+ like_statement = k + not + ` LIKE ${ v . substr ( 0 , v . length - 1 ) } %${ v . slice ( - 1 ) } ` ;
635+ } else {
636+ like_statement = k + not + ` LIKE ${ v } %` ;
637+ }
627638 }
628639 else if ( side === 'both' ) {
629- like_statement = k + not + ' LIKE ' + "'%" + v + "%'" ;
640+ if ( typeof v === 'string' ) {
641+ like_statement = k + not + ` LIKE ${ v . substr ( 0 , 1 ) } %${ v . substr ( 1 , v . length - 2 ) } %${ v . slice ( - 1 ) } ` ;
642+ } else {
643+ like_statement = k + not + ` LIKE %${ v } %` ;
644+ }
630645 }
631646 else {
632647 throw new Error ( "like(): Invalid direction provided!" ) ;
0 commit comments