【问题标题】:SQL query to select data from multiple columns via PHP post methodSQL查询通过PHP post方法从多列中选择数据
【发布时间】:2016-02-07 05:43:19
【问题描述】:

我是网络开发的新手。我正在尝试使用 Apache+PHP+SQLite 实现数据库驱动的 Web 服务器。使用 post 方法,我尝试将 html 页面上的输入值作为 SQL 查询传递给 Web 服务器,以检索数据库中的数据。

问题描述: 假设我的数据库中有一个表(名为 my_table),有 3 列,a1、a2 和 a3。在 php 文件中,最终用户指定了 3 个输入值,例如 $v1、$v2 和 $v3。 $v1、$v2 和 $v3 的值将与 a1、a2 和 a3 中的模式匹配,以便检索匹配的数据行。 $v1、$v2 或 $v3 可以是空字符串,具体取决于用户的查询。形式上来说,如果$v1='', $v2='' and $v3='',则my_table中的所有数据都会被检索;如果 $v1='v1_value'、$v2='' 和 $v3='',则将检索列 a1 具有模式 v1_value 的数据。

我的 HTML 表单标签

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table>
        <tr><td>Item1: </td><td><input type="text" name="v1"></td></tr>
        <tr><td>Item2: </td><td><input type="text" name="v2"></td></tr>
        <tr><td>Item3: </td><td><input type="text" name="v3"></td>
    </table>
    <input type="submit", name="submit" value="Submit">
</form>

我的 PHP 代码

$v1 = $_POST['v1']; 
$v2 = $_POST['v2'];
$v3 = $_POST['v3'];

我被困在这里......

$query = "SELECT * FROM my_table WHERE <A_PROPER_CONDITION_STATEMENT>"

也就是说,如何通过查询来检索我想要的数据。

希望我描述清楚。感谢帮助。

【问题讨论】:

    标签: php mysql sql-server sqlite


    【解决方案1】:

    试试这个代码:-

    $query = "SELECT * FROM my_table WHERE 1=1 ";
    
    if(isset($_POST['v1']))
    $query .=" and  a1=".$_POST['v1'];
    
    if(isset($_POST['v2']))
    $query .=" and  a2=".$_POST['v2'];
    
    if(isset($_POST['v3']))
    $query .=" and  a3=".$_POST['v3'];
    

    【讨论】:

    • 非常感谢您的及时回复@Rahautos。 1=1 的绝招。我了解到$_POST 不会返回空类型,所以我想在使用isset() 断言条件之前,有必要将null 分配给$_POST 变量,对吧?另一件事,如果我有 v1, v2, ..., vn 其中 n 很大,有没有更简单的方法来实现同样的事情?再次感谢。
    • 如果我的回答对你有帮助,请采纳我的回答:) @Yueguoguo
    • 当然可以,但我想看看是否还有其他想法。如果不是,我将通过接受您的回答来结束这个问题。 :)
    猜你喜欢
    • 2017-12-15
    • 2012-11-05
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多