SQL查询到ID号用逗号分隔的列?

时间:2014-10-17 16:36:35

标签: php mysql

剧本:

<?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号选择行。它应该查看&#34; hashtag_id&#34;该表的列,看看是否可以在那里找到该ID号,如果可以在那里找到,那么它应该选择该行。

ID号在&#34; hashtag_id&#34;内。列以逗号分隔。

示例:

98, 99, 100

基本上,有没有办法进行SQL查询,以查看 &#34;列是否包含&#34; 该ID号或是否有其他内容这里吗?

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分:0)

要执行包含,您可以使用LIKE -

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