表单和后续sql语句中的多个未定义变量

时间:2015-11-09 00:25:59

标签: php sql

我寻求的结果是遍历从isset或true的表单中获取的项目,然后使用sql语句查询数据库。复杂性来自于我有9个字段,用户可以选择一个或多个或所有字段(它是一个搜索数据库,但每次你选择一个额外的字段,它会优化搜索)。返回true的代码部分我可以通过使用foreach循环来解决这个问题,但如果结果变化,如何将它链接到SQL查询?

2 个答案:

答案 0 :(得分:1)

根据输入的字段生成不同的查询。 幸运的是,这在SQL中并不太难:所有这些字段都在WHERE子句中:

$where = [ 'foo' => 'bar', 'baz' => 0 ];
$sth = $db->prepare( "SELECT * FROM $table WHERE " .
    implode( " AND ",
        array_map( function($i) { return "$i=?"; }, array_keys( $where ) ) )
    );
$sth->execute( array_values( $where ) );

当然,如果字段之间存在关系,查询可能会变得更复杂,但这是它的要点。

答案 1 :(得分:-1)

学习这需要时间和耐心,我已经从表格中删除了变量

    if(isset($_POST['Search'])){
    $packID = $_POST['packID'];
    $supplier_name = $_POST['supplier_name'];
    $timber_species = $_POST['timber_species'];
    $timber_product = $_POST['timber_product'];
    $timber_grade = $_POST['timber_grade'];
    $timber_finish = $_POST['timber_finish'];
    $timber_treatment = $_POST['timber_treatment'];
    $width = $_POST['width'];
    $thickness = $_POST['thickness'];
    $length = $_POST['length'];
    $markup = $_POST['markup'];
} else{

    $packID="";
    $supplier_name="";
    $timber_species="";
    $timber_product="";
    $timber_grade="";
    $timber_finish="";
    $timber_treatment="";
    $width= "";
    $thickness= "";
    $length="";

}

当变量可能设置或未设置时,您如何编写此Kenney?我必须承认我是一个新手并且热衷于学习。这需要时间和耐心。