![](/img/trans.png)
[英]Error with a prepared statement with named placeholders in PHP with 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.