簡體   English   中英

擺脫db_query()drupal中的單引號

[英]Get rid off single quotes in db_query() drupal

我需要執行以下查詢

switch($interval) {
case "1 month":
$interval = "1 month";
break:
case "1 year":
$interval = "1 year";
break:
}

db_query("SELECT fid FROM file_managed WHERE FROM_UNIXTIME(TIMESTAMP) <=    DATE_SUB(NOW(), INTERVAL :interval)", array(":interval" => $interval))

此查詢引發sql錯誤,因為您可以看到在“ 1個月”前后添加了單引號

執行的查詢: SELECT fid FROM file_managed WHERE FROM_UNIXTIME(TIMESTAMP)<= DATE_SUB(NOW(),INTERVAL'1 month')

預期查詢 :SELECT fid FROM file_managed WHERE FROM_UNIXTIME(TIMESTAMP)<= DATE_SUB(NOW(),間隔1個月)

關於如何擺脫單引號的任何想法?

如果您有$ interval變量的受信任參數值(例如,它不是來自用戶而是填充它),則可以將其放置在sql字符串中,而不是綁定它,如下所示:

$interval = "1 year";
db_query("SELECT fid FROM file_managed WHERE FROM_UNIXTIME(TIMESTAMP) <= DATE_SUB(NOW(), INTERVAL {$interval})");

它將運行下一個sql查詢:

string(95) "SELECT fid FROM file_managed WHERE FROM_UNIXTIME(TIMESTAMP) <= DATE_SUB(NOW(), INTERVAL 1 year)"

(使用雙引號而不是單引號括起來的sql字符串,以使PHP解釋器可以評估嵌套變量)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM