Skip to content

Commit

Permalink
Properly escape single-quotes in SQL COMMENTS in MySQL driver. Fixes …
Browse files Browse the repository at this point in the history
…ticket #DC-709
  • Loading branch information
johnkary committed Jun 1, 2010
1 parent fa4d8d2 commit 640d2a1
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/Doctrine/Export/Mysql.php
Expand Up @@ -267,7 +267,7 @@ public function getDeclaration($name, array $field)
' ' . $field['check'] : '';

$comment = (isset($field['comment']) && $field['comment']) ?
" COMMENT '" . $field['comment'] . "'" : '';
" COMMENT " . $this->conn->quote($field['comment'], 'text') : '';

$method = 'get' . $field['type'] . 'Declaration';

Expand Down
47 changes: 47 additions & 0 deletions tests/Ticket/DC709TestCase.php
@@ -0,0 +1,47 @@
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/

/**
* Doctrine_Ticket_DC709_TestCase
*
* @package Doctrine
* @author John Kary <john@johnkary.net>
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @category Object Relational Mapping
* @link www.doctrine-project.org
* @since 1.0
* @version $Revision$
*/
class Doctrine_Ticket_DC709_TestCase extends Doctrine_UnitTestCase
{
public function testTest()
{
$dbh = new Doctrine_Adapter_Mock('mysql');

$conn = Doctrine_Manager::getInstance()->connection($dbh, 'mysql', false);

$sql = $conn->export->createTableSql('mytable', array(
'name' => array('type' => 'string', 'length' => 255, 'comment' => "This comment isn't breaking")
));

$this->assertEqual($sql[0], "CREATE TABLE mytable (name VARCHAR(255) COMMENT 'This comment isn''t breaking') ENGINE = INNODB");
}
}

0 comments on commit 640d2a1

Please sign in to comment.