剧本:
<?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号或是否有其他内容这里吗?
任何建议都表示赞赏。
答案 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'] . "%'";