nilportugues / php-sql-query-builder

An elegant lightweight and efficient SQL Query Builder with fluid interface SQL syntax supporting bindings and complicated query generation.
http://nilportugues.com
MIT License
418 stars 115 forks source link

Limit syntax fail #105

Open konorlevich opened 5 years ago

konorlevich commented 5 years ago

Reproduce

PHP 7.3.4-1+ubuntu18.04.1+deb.sury.org+3 (cli) (built: Apr 10 2019 10:51:11) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.4-1+ubuntu18.04.1+deb.sury.org+3, Copyright (c) 1999-2018, by Zend Technologies

nilportugues/sql-query-builder:1.7.0

$query = (new MysqlBuilder())
    ->select($tableName)
    ->orderBy('id', 'DESC')
    ->limit(1)
    ->end()
$sql = $bulder->writeFormatted($query);
$values = $bulder->getValues();
var_dump($sql, $values);
$stmt = (new PDO($dsn,$username,$password) )
    ->prepare($sql);
$stmt->execute($values);
var_dump($stmt->errorInfo()[2]);

Expected behavior

SELECT [...] LIMIT 1

Actual behavior

SELECT [...] LIMIT :v3, :v4"

array(4) { [...] [":v3"]=> int(1) [":v4"]=> int(0) }

string(154) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '1'' at line 1"

alex-alicunde commented 5 years ago

Use: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);