2014-10-17 61 views
0

腳本:SQL查詢到ID號用逗號分隔的列嗎?

<?php 

    include("connect.php"); 

?> 
<?php 

    echo "<h1>The Hashtag: </h1>"; 
    if(isset($_GET['hashtag'])){ 
     echo $_GET['hashtag']; 
    } 


    // Select the ID of the given hashtag from the "hashtags" table. 
    $tqs = "SELECT `id` FROM `hashtags` WHERE `hashtag` = '" . $_GET['hashtag'] . "'"; 
    $tqr = mysqli_query($dbc, $tqs) or die(mysqli_error($dbc)); 
    $row = mysqli_fetch_assoc($tqr); 

    // This prints e.g.: 
    // 100 
    echo "<br/><br/>"; 
    print_r($row['id']); 

    // Select the threads from the "thread" table which contains the hashtag ID number. 
    $tqs_two = "SELECT * FROM `thread` WHERE `hashtag_id` IN ('" . $row['id'] . "')"; 
    $tqr_two = mysqli_query($dbc, $tqs_two) or die(mysqli_error($dbc)); 
    $row_two = mysqli_fetch_assoc($tqr_two); 

    echo "<br/><br/>"; 
    print_r($row_two); 

?> 

腳本應該由主題標籤的ID碼選擇行。它應該在表的「hashtag_id」列中查看是否可以在那裏找到該ID號,如果可以在那裏找到它,那麼它應該選擇該行。

身份證號碼位於由逗號分隔的「hashtag_id」列內。

例子:

98, 99, 100 

基本上,有沒有辦法做一個SQL查詢,看看是否列「包含」該ID號或可能有別的東西在這裏?

任何建議表示讚賞。

+0

'$ TQS = 「SELECT ID FROM主題標籤#標籤WHERE =「」。 $ _GET ['hashtag']。 「'」;'不應該'hashtag'是'hashtag_id'? – 2014-10-17 16:38:26

+1

無關:$ tqs易受SQL注入影響。 – 2014-10-17 16:45:18

+0

它是來自GET方法的hashtag的「名稱」。 – ftxn 2014-10-17 17:07:12

回答

0

要做到包含你會使用LIKE -

$tqs_two = "SELECT * FROM `thread` WHERE `hashtag_id` LIKE '%" . $row['id'] . "%'"; 
+1

非常感謝!有用! – ftxn 2014-10-17 17:13:50

2

傑伊說,你可以使用 「包含」。儘管如此,你仍需謹慎。如果您正在查找「9」的hashtag_id,則您的查詢需要避免返回「19」,「99」,「93」等。爲此,您必須依賴hashtag_id字段中數據的確切格式。如果您的數字真的被逗號和空格分隔,您可以通過執行「hashtag_id LIKE'%,9,'」輕鬆找到不在查詢的開始或結束處的完全匹配。但是,這不會在hashtag_id字段的開頭或結尾找到任何內容。要抓住這些,你還需要「hashtag_id LIKE'9,%'」和「hashtag_id LIKE'%,9'」。

因此,捕捉所有三種可能性:

SELECT * FROM `thread` WHERE `hashtag_id` LIKE '9,%' or `hashtag_id` LIKE '%, 9,%' or `hashtag_id` LIKE '%, 9'; 
+0

可能有一種方法可以使這個更簡潔,但我現在非常生病,不能集中很長時間來弄清楚。 – 2014-10-17 16:56:28

+0

此外,我會建議創建一個完全獨立的表來存儲主題標籤和線程之間的關係。它使你的hashtag搜索更簡單,可能更快,並且更容易適應標籤維護(去除標籤,&c)。 – 2014-10-17 17:02:32

+0

對不起,這個問題,但我認爲這可能是做到這一點。你有一個例子嗎? – ftxn 2014-10-17 17:09:20