2017-07-16 59 views
0

我在PHP中使用PDO類來運行PostgreSQL查詢。PHP中的單引號Postgres PDO

$conn = new PDO("pgsql:host=$dbhost;port=$dbport;dbname=$dbname;user=$dbuser;password=$dbpass"); 
$query = 'SELECT "ID", "Description" FROM "MyTable"'; 
$result = $conn->query($query); 

假設的東西在查詢需要在單引號像

$query = 'SELECT "ID", "Description" FROM "MyTable" WHERE "Description" = 'A107''; 

這是行不通的事情是這樣的。但是,如果我執行以下操作,它將起作用。

$query = 'SELECT "ID", "Description" FROM "MyTable" WHERE "Description" = ' . $conn->quote('A107', PDO::PARAM_STR); 

我知道在PDO的準備和執行過程中有更好的方法。這段代碼基本上是一個模板的一部分,我的一位同事(編程經驗有限)希望將PostgreSQL查詢粘貼到該模板中。

因此,我正在尋找在這種情況下處理單引號的最簡單方法。這些查詢可能比我給出的例子更復雜,我不希望他們不得不亂用太多的模板。沿着轉義線的東西會很好,但還沒有找到像這樣的工作。我意識到,他們的一些修改將是必要的,但希望儘量減少這一點。

+2

你可以逃避單引號 - 使用'\'' –

回答

0

如果您想要將任何查詢粘貼到php代碼中而不用擔心轉義代碼本身,您可以使用'heredoc'或'nowdoc'。見php strings documentation

它使用字符串前後的唯一標籤來標識開始和結束。請注意,結束標識符必須位於行首。

$query = <<<'a_unique_string' 
select * from foo where bar = 'baz' 
a_unique_string; 
+0

這很好。謝謝。 – COM