我想用SQL選擇代碼一個bbcode。基本上我希望用戶能夠在文本字段中輸入[user]Anotheruser[/user]
,然後在前端將其轉換爲如下所示的URL:http://mydomain.com/user/[userid]/anotheruser
。因此,爲了獲得用戶標識,我需要包含一個SQL選擇,另外還要找出其他用戶實際存在的地方。我可以通過preg_replace
這樣做來創建bbcode,還是需要做更復雜的事情?PHP:BBCode與SQL選擇?
1
A
回答
0
pre_replace應該工作,小心tho。確保你修補任何漏洞......特別注意sql注入。
0
你應該避免注射POST方,就像你應該在其他地方做的一樣。
這種情況根本就沒有什麼不同。
0
preg_match
標籤首先,獲取用戶名,執行查詢(要小心,並作出這樣的工序的安全!),並更換整個匹配的字符串與新網址:
preg_match_all ('#\[user\](.*?)\[/user\]#i', $text, $matches, PREG_SET_ORDER);
for ($i = 0, $j = count($matches); $i < $j; $i++)
{
$userName = $matches[$i][1];
$userId = 0;
// query example with mysqli
$stmt = $sql->prepare('SELECT uid FROM users WHERE username = ? LIMIT 1');
$stmt->bind_param('s', $userName);
$stmt->execute();
$stmt->bind_result($userId);
if ($stmt->fetch())
{
$text = str_replace($matches[$i][0], "<a href=\"/user/$userId/$userName\" title=\"$userName\">$userName</a>", $text);
}
}
相關問題
- 1. SQL:與選擇
- 2. SQL選擇與Unicode
- 3. MS SQL插入與選擇
- 4. SQL選擇問題與PHP
- 5. 選擇結果與SQL
- 6. SQL查詢與內選擇
- 7. Problèm與SQL選擇分組
- 8. 自定義選擇與SQL
- 9. SQL更新與選擇
- 10. 選擇選擇SQL
- 11. 與SQL選擇選項納入
- 12. SQL - 選擇內選擇
- 13. SQL在選擇中選擇
- 14. sql選擇 - 另一個選擇與NULL返回只有NULL
- 15. 語法錯誤與選擇在VB中選擇訪問SQL
- 16. SQL選擇與內部聯接,子選擇和限制
- 17. 從列選擇時間與SQL
- 18. oracle sql更新與子選擇
- 19. SQL與多個行選擇一個ID
- 20. 與id參數選擇在SQL
- 21. 問題與SQL Server選擇替換()
- 22. 與同一列SQL選擇多行值
- 23. 與多行條件SQL選擇數據
- 24. SQL服務器選擇行與數
- 25. SQL CREATE VIEW與在並選擇
- 26. LINQ to SQL - 選擇SUM與WHERE
- 27. SQL插入多行與內選擇
- 28. SQL選擇與SUM的情況?
- 29. sql中與計數選擇它
- 30. SQL案例聲明與子選擇
好的解決方案。爲了節省資源,你可以清理每一個匹配,然後'implode()'$ matches'並且查詢'WHERE用戶名IN(..imploded matches ..)'。這樣你只需要執行*一個*查詢。 – Alec 2010-05-10 10:46:53
是的,我只是想爲SQL查詢顯示一個可能的代碼。使用預準備語句時,最好在語句之前(循環之前)準備語句,並更新參數並執行它。準備好的陳述實際上是相當快的,我相信它會比使用'IN'更快(並且可能有點安全,因爲你不需要自己逃脫)。 – poke 2010-05-10 11:33:07