Php 根据复选框选择查询建筑

Php 根据复选框选择查询建筑,php,sql,Php,Sql,我想根据我的复选框列表从我的数据库中生成一个查询 我的复选框: 我的问题是: 如果未选中第一个复选框,则表示我的查询不起作用,因为它与或一起工作,而它必须以和开头 你能帮忙吗 谢谢。您的HTML和PHP代码中有很多错误。。。 我不会在这里一一提及,但我会这样做 <input type="checkbox" name="searchName" checked="checked" />Name <input type="checkbox" name="searchAddress"

我想根据我的复选框列表从我的数据库中生成一个查询

我的复选框: 我的问题是: 如果未选中第一个复选框,则表示我的查询不起作用,因为它与
一起工作,而它必须以
开头

你能帮忙吗


谢谢。

您的HTML和PHP代码中有很多错误。。。 我不会在这里一一提及,但我会这样做

<input type="checkbox" name="searchName" checked="checked" />Name
<input type="checkbox" name="searchAddress" />Address
<input type="checkbox" name="searchCompany" />Company
<input type="checkbox" name="searchComments" />Comments

<?php
$fields = array(
    'searchName'    => 'KDX_Name',
    'searchAddress' => 'KDX_PostalAddress',
    'searchCompany' => 'KDX_Company',
    'searchComments'=> 'KDX_Comments',
);

$cond = array();
foreach ($fields as $form_field => $db_field) {
    if (isset($_POST[$form_field])) {
        $cond[] = "$db_field LIKE '%'" . mysql_escape($_POST[$form_field]) . "%'";
    }
}

$subQuery = implode(' OR ', $cond);
?>
名称
住址
公司
评论

从PDO返回到
mysql.*
函数似乎是一个非常糟糕的主意。是的,好的,你可以使用PDO——在这种情况下,这并不重要。请参阅上面我的编辑。或者这不是完整的副本,它有点不同:)
$subQuery='';
if($_POST['searchName']=='true')     { $subQuery .= " AND KDX_Name LIKE :KDX_SearchTerm"; }
if($_POST['searchAddress']=='true')  { $subQuery .= " OR KDX_PostalAddress LIKE :KDX_SearchTerm"; }
if($_POST['searchCompany']=='true')  { $subQuery .= " OR KDX_Company LIKE :KDX_SearchTerm"; }
if($_POST['searchComments']=='true') { $subQuery .= " OR KDX_Comments LIKE :KDX_SearchTerm"; }
<input type="checkbox" name="searchName" checked="checked" />Name
<input type="checkbox" name="searchAddress" />Address
<input type="checkbox" name="searchCompany" />Company
<input type="checkbox" name="searchComments" />Comments

<?php
$fields = array(
    'searchName'    => 'KDX_Name',
    'searchAddress' => 'KDX_PostalAddress',
    'searchCompany' => 'KDX_Company',
    'searchComments'=> 'KDX_Comments',
);

$cond = array();
foreach ($fields as $form_field => $db_field) {
    if (isset($_POST[$form_field])) {
        $cond[] = "$db_field LIKE '%'" . mysql_escape($_POST[$form_field]) . "%'";
    }
}

$subQuery = implode(' OR ', $cond);
?>