我想用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. OutOfMemoryException與SQL選擇
- 3. 選擇行與SQL
- 4. SQL選擇與Unicode
- 5. 選擇 - SQL與T-SQL?
- 6. SQL選擇問題與PHP
- 7. MS SQL插入與選擇
- 8. SQL連接表與選擇
- 9. SQL查詢與內選擇
- 10. Problèm與SQL選擇分組
- 11. SQL更新與選擇
- 12. 自定義選擇與SQL
- 13. SQL:子與日期選擇
- 14. SQL,插入與選擇
- 15. 選擇結果與SQL
- 16. 選擇選擇SQL
- 17. 與SQL選擇選項納入
- 18. SQL - 選擇內選擇
- 19. SQL在選擇中選擇
- 20. Sql選擇多個值從選擇與許多聯接
- 21. 選擇在SQL Server中單列與選擇多行
- 22. SQL選擇與內部聯接,子選擇和限制
- 23. sql選擇 - 另一個選擇與NULL返回只有NULL
- 24. 語法錯誤與選擇在VB中選擇訪問SQL
- 25. Sql篩選選擇
- 26. 掙扎與SQL子查詢選擇
- 27. 從列選擇時間與SQL
- 28. SQL選擇條件與輸入變量
- 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