2016-03-07 192 views
0

我已經做了表格上搜索自己的網站和即時通訊試圖用看起來像這樣搜索欄

if (isset($_GET['search'])) 
{ 
$search = $_GET['search']; 
$tsql5 = "SELECT * FROM blog_posts WHERE blog_title LIKE '%:search%'"; 
$stmt6 = $conn->prepare($tsql5); 
$stmt6->execute (array($search)); 
while($search_result = $stmt6->fetch(PDO::FETCH_BOTH)) 
{ 
echo '$search_result[0]'; 
and so on... 

從我發現它應該是所有示例等方面的PHP代碼加工?當我按下搜索按鈕我去mysite.se/index.php?search=searchword

但我沒有結果,當我知道即時通訊尋找一個單詞,確實存在於blog_title列...我是否缺少這裏有什麼?

編輯:可能要添加使用Microsoft SQL Server不mysql的

+1

您應該閱讀,理解和利用參數化查詢,才能訪問小型桌面表。 –

+1

@SeanLange OP正在嘗試使用參數化查詢,只是錯誤地使用它們。 – chris85

+0

@ chris85很酷。我不是一個PHP專家(實際上我幾乎可以拼寫它),但它看起來不像其他的PHP代碼片段,我看過的參數化查詢。 –

回答

3

你正在尋找一個像:search,不是你的實際任期,即時通訊。 (我認爲這實際上會給佔位符引入一個關於不匹配的綁定術語的錯誤。)佔位符需要獨立。另外,當綁定時,您需要在綁定中使用綁定名稱。請嘗試:

$tsql5 = "SELECT * FROM blog_posts WHERE blog_title LIKE :search"; 
$stmt6 = $conn->prepare($tsql5); 
$stmt6->execute (array(':search' => '%' . $search . '%')); 
+0

非常感謝你解釋,它按預期工作:) –

+0

只是出於好奇,我可以像$ tsql5 =「SELECT * FROM blog_posts WHERE * LIKE:search」這樣做嗎?如搜索所有列? –

+0

不,你可以用'或'列出所有列;或者您可以查看全文搜索。 https://msdn.microsoft.com/en-us/library/ms142571.aspx – chris85