簡體   English   中英

從准備好的mysql查詢中獲取命名占位符

[英]get named placeholders from prepared mysql query

給定PHP中准備好的MySQL語句,如何從中選擇命名的占位符?

例如,如果我正在准備的查詢是

SELECT name, colour FROM fruit WHERE calories < :calories AND colour = :colour

要么

INSERT INTO people (name, position, admin_level) VALUES (:name, :pos, 0) 

那么我想作為輸出array(":calories",":colour")array(":name",":pos")

該功能似乎未在PHP網站上列出。 有什么方法可以從准備好的語句中獲取命名的占位符?

您將必須使用某種字符串操作來完成我認為您要問的事情。 我知道沒有標准的機制可以做到這一點。 所以像這樣:-

$q = 'SELECT name, colour FROM fruit WHERE calories < :calories AND colour = :colour';

$res = preg_match_all('/:[a-z]+/',$q, $matches);

print_r($matches[0]);

會生成如下內容:

Array
    (
        [0] => :calories
        [1] => :colour
    )
)

當心,我不是正則表達式專家,因此這需要進行一些測試,以確保它不會在某些完整的查詢上中斷。

經過一番研究,我發現

或者,如果您在完成

->prepare()
->bindParams()
->execute()

並生成一個語句句柄,您可以使用:-

$stmt->debugDumpParams()

鏈接到PHP手冊 ,這是我知道的基本概念,現在我們兩個都學到了一些東西,因為我之前從未見過。

暫無
暫無

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

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