2017-04-14 16 views
1

我有,我創建主義原始的SQL表控制器:如何創建表與symfony的控制器,原始的SQL並獲得迴應

$sql = 'CREATE TABLE IF NOT EXISTS testTable 
(id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) 
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'; 
$em = $this->getDoctrine()->getManager(); 

$statement = $em->getConnection()->prepare($sql); 
$statement->execute(); 

但我似乎無法弄清楚如何得到迴應知道它是否成功執行。有任何想法嗎?

+0

如果有問題,那麼將引發異常。沒有例外意味着表格已經創建。換句話說,不需要做或檢查任何東西。雖然執行成功返回true。 – Cerad

回答

1

響應應該在你的「聲明」變量中,加上:var_dump($statement);並參見。

2

Cerad是正確的。獲取errorCode並檢查它是否爲'0000'。我正在使用MySQL,如果它成功運行,我會將'0000'作爲errorCode。

... 
$statement->execute(); 

var_dump($statement->errorCode()); // Get the error code. 

我認爲這應該適合你。

僅供參考,我從Doctrine API文檔中獲得了該信息,並試用了它。這裏是鏈接供參考:

http://www.doctrine-project.org/api/dbal/2.4/class-Doctrine.DBAL.Driver.Statement.html

+0

鑑於沒有DBAL \ Statement :: getResults方法,我懷疑這是行不通的。另一方面,Statement :: execute()在成功時返回true,在失敗時返回false。嗯。 – Cerad

+0

感謝您檢查我的@Cerad!我更新了我的帖子。 –

相關問題