2015-12-16 81 views
1

我想這樣做,查詢如何刪除對SQL查詢變量的雙引號在PHP

$month = 'january'; //name of the column 
$year = 2015; 
$sql_query = 'SELECT "'.$month.'" FROM tbl_inpc WHERE year = "'.$year.'"'; 

,當我打印$sql_query它表明:

SELECT "january" FROM tbl_inp WHERE year = "2015" 

「」雙引號之間它不工作,它應該是這樣的

SELECT january FROM tbl_inp WHERE year = 2015 

也許它可能是一些簡單和愚蠢但我的思想被阻止,有些想法或我做錯了什麼?謝謝。

+1

只需用' 「選擇$一個月tbl_inpc其中year = $年」;'但更妙的是改變你的表設計。它有主要的缺陷。您不應該將您的查詢修補到一起 –

+0

只需刪除單引號內的雙引號。 'SELECT'''到這個''SELECT'' – frz3993

+0

我刪除了,它還沒有工作('字段列表'中的未知列'$ month') –

回答

0

在PHP中您可以使用不同的雙引號內,而無需退出您的字符串,然後只用一個反斜槓逃脫你的報價:

$sql_query = "SELECT \"$month\" FROM tbl_inpc WHERE year = $year"; 

如果要格外小心,你也可以把裏面的變量的大括號,以確保它被正確評估,如果你有在你使用的是關鍵的數組變量,這是特別有用的:

$sql_query = "SELECT \"{$month[3]}\" FROM tbl_inpc WHERE year = {$year}"; 

如果你想保持你原來有,你需要做的是去除雙曲圍繞今年OTES:

$sql_query = 'SELECT "'.$month.'" FROM tbl_inpc WHERE year = '.$year; 

晚注:

OP想從兩個$year刪除引號和$month我的例子演示瞭如何從$year各地特別是刪除它們。同樣的方法也可以採取$month,但例子說明如何保持一個變量,報價和出報價在每種情況下

+0

這對我很有用,但是謝謝大家的回答 –

+0

我不明白這和原來的'$ sql_query'有什麼不同 – Barmar

+0

他想**刪除**引號圍繞變量,不添加它們 – Barmar

0

二者必選其一:

$sql_query = 'SELECT '.$month.' FROM tbl_inpc WHERE year = '.$year; 

用的部件周圍沒有雙引號查詢,你替換變量,或:

$sql_query = "SELECT $month FROM tbl_inpc WHERE year = $year"; 

注意,這裏使用的整個字符串左右雙引號,因爲變量沒有得到單引號內取代。

有關詳細信息,請參閱

When to use single quotes, double quotes, and backticks in MySQL

What is the difference between single-quoted and double-quoted strings in PHP?