php - 用于搜索的 SQL 查询不返回任何结果

标签 php mysql

我有一个 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/

相关文章:

php - CodeIgniter 2.0 - 验证数组

php - 2 个表的 LEFT JOIN 查询失败

mysql HOUR() 占时区

mysql - 具有更深层次关系的 SQL 查询

mysql drop table 如果存在于程序内部

php - 设置脚本来访问单独的数据库

java - 我想将数据库中的多个图像显示到 jsp(我正在映射 servlet),所以在 jsp 中,我将显示在 img 标签的 src 中

php - 你能将 php 函数quoted_printable_decode() 转换为基于 NSString 的 Objective-C 函数/类别方法吗?

exec - 我可以使用 PHP 代码修改 disable_functions,或者以不涉及修改 php.ini 的方式进行修改吗?

PHP MYSQL 死循环