我有一个 SQL 表,其中大约有 5000 行。我编写了一段 php 代码,用于搜索主键并使用 WHERE-IN 子句显示结果。当我只搜索一个主键时,它会给出我想要的结果,但如果我搜索多个主键,它不会给出任何结果。附上我的代码与此。我是这个领域的初学者。任何人都可以帮助我..??
<!DOCTYPE html>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="description" content="Demo project">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="bootstrap.css">
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "site_info";
$conn = mysql_connect($servername, $username, $password);
mysql_select_db("site_info");
$siteid= $_GET['search1'];
$sql = "SELECT * FROM total_database WHERE primary_key IN ('$siteid')";
$result = mysql_query($sql);
if(!$result){die(mysql_error());}
?>
<body>
<div class="container">
<table class="table table-hover">
<tr>
<th>column 1</th>
<th>column 2</th>
<th>column 3</th>
<th>column 4</th>
<th>column 5</th>
</tr>
<?php
if (mysql_num_rows($result) > 0) {
while($row = mysql_fetch_array($result)) {
echo "<form action=info.php method=GET>";
echo"<tr>";
echo "<td>" .$row["column1"]. "</td>";
echo "<td>" .$row["column2"]. "</td>";
echo "<td>" .$row["column3"]. "</td>";
echo "<td>" .$row["column4"]. "</td>";
echo "<td>" .$row["column5"]. "</td>";
echo "<input type=hidden name=site_id value=".$row["primary_key"]."></input>";
echo "<td>" ."<input class=btn type=submit value=select". "></td>";
echo"</tr>";
echo "</form>";
}
}
?>
</table>
</div>
</body>
<script type="text/javascript"></script>
最佳答案
正如您所说,您的 $siteid
值显示正确。
假设 $siteid = '1,5,6'
现在看看您的查询:
$sql = "SELECT * FROM total_database WHERE primary_key IN ('$siteid')";
^ here
通过$siteid
查询后你会得到什么?
$sql = "SELECT * FROM total_database WHERE primary_key IN ('1,5,6')";
^ here
因此,您正在寻找值为 '1,5,6'
的 primary_key
。你确定你有这样的主键吗?
你需要做的就是用逗号将$siteid
分解。然后将值内爆为新字符串,因此您的查询应如下所示:
$sql = "SELECT * FROM total_database WHERE primary_key IN ('1','5','6')";
^ here
关于php - 用于搜索的 SQL 查询不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33185277/