2014-10-17 60 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