Issue Details (XML | Word | Printable)

Key: ZF-2298
Type: Bug Bug
Status: Resolved Resolved
Resolution: Cannot Reproduce
Priority: N/A N/A
Assignee: Ralph Schindler
Reporter: Jason Austin
Votes: 1
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Google issue summary
Zend Framework

quoteInto changes value when an array is passed as second argument.

Created: 12/Dec/07 10:28 AM   Updated: 27/Aug/09 10:20 AM   Resolved: 27/Aug/09 10:20 AM
Component/s: Zend_Db
Affects Version/s: 1.0.2
Fix Version/s: 1.9.3

Time Tracking:
Not Specified


 Description  « Hide

When passing an array to $adapter->quoteInto() as the second argument, the function changes the values of the array. For example:

// names = Array ( [0] => php [1] => google [2] => working )
$names = array(
'php',
'google',
'working'
);

$where = $dba->quoteInto('name IN ', $names)

// print the existing array
print_r($names);

// prints out
// Array ( [0] => 'php' [1] => 'google' [2] => 'working' )

Notice quoteInto() has now added single quotes to each value in the array, which is unexpected behavior. This was specifically recreated using the MySQL db adapter using Zend _Db_Table.



Wil Sinclair added a comment - 25/Mar/08 08:44 PM

Please categorize/fix as needed.


Wil Sinclair added a comment - 18/Apr/08 01:12 PM

This doesn't appear to have been fixed in 1.5.0. Please update if this is not correct.


Ralph Schindler added a comment - 10/Jan/09 10:58 AM

Will evaluate within 2 weeks


Ralph Schindler added a comment - 27/Aug/09 10:20 AM

Cannot reproduce, with latest trunk I tried the unit test below, and it passed fine. Appears that everything that is passed into quoteInto() comes out as it went in.

Index: tests/Zend/Db/Adapter/TestCommon.php
===================================================================
--- tests/Zend/Db/Adapter/TestCommon.php	(revision 17795)
+++ tests/Zend/Db/Adapter/TestCommon.php	(working copy)
@@ -1265,6 +1265,14 @@
         $this->assertEquals('foo = 1234 and bar = ?', $value,
             'Incorrect quoteInto() result for count');
     }
+    
+    public function testAdapterQuoteIntoArray()
+    {
+        $preNames = array('php', 'google', 'working');
+        $postNames = $preNames;
+        $where = $this->_db->quoteInto('IN (?)', $postNames);
+        $this->assertEquals($preNames, $postNames);
+    }
 
     public function testAdapterQuoteTypeInt()
     {