【问题标题】:sql queries what changes are necessary to obtain a result [duplicate]sql查询获得结果需要进行哪些更改[重复]
【发布时间】:2023-04-05 09:28:01
【问题描述】:

我在数据库中有一个包含列名的表:

Name
Department
organization
location
year
email

我有一个具有 3 个名称属性值的表单:departmentyearorganization

当用户填写这些属性中的任何一个时,我希望将其发布到我的 PHP 脚本中,然后该脚本将仅根据已填写的属性查询结果。

例如:

  • 案例1:填写的表格数据为部门和公司,年份为空
  • 案例2:数据填写的是公司,年份部门为空,此类案例。

如何修改下面的查询脚本以获得所需的结果?

// Conneced to server and select database.

$sql="SELECT * FROM $tbl_name WHERE dept =$_post['dept'] and year =$_post['year'] and company  =$_post['commpany'];
$result = mysql_query($sql);
while($rows=mysql_fetch_array($result)) {
?>

【问题讨论】:

    标签: php mysql database http-post


    【解决方案1】:

    你应该在喜欢的地方使用动态

    $where = "WHERE 1 ";
    
    if(isset($_POST['dept']) && $_POST['dept']!="")
    {
          $dept = mysql_real_escape_string($_POST['dept']);
          $where .= " AND dept='$dept' ";
    }
    
    if(isset($_POST['year']) && $_POST['year']!="")
    {
          $year = mysql_real_escape_string($_POST['year']);
          $where .= " AND year='$year' ";
    }
    
    if(isset($_POST['commpany']) && $_POST['commpany']!="")
    {
          $commpany = mysql_real_escape_string($_POST['commpany']);
          $where .= " AND commpany='$commpany' ";
    }
    
    $sql="SELECT * FROM `$tbl_name` ".$where;
    

    注意: mysql_* 已弃用 mysqli_*PDO

    【讨论】:

    • 如果 company 和 year 都有值,并且 dept 为空,您能否详细说明最终查询的样子? $where= "where1" 有什么作用?
    • SELECT * FROM $tbl_name WHERE 1 AND dept='some_dept' AND year='some_year'
    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 2019-07-12
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多