Php 用多个联接连接查询字符串
我对连接和基于字段动态生成连接非常陌生 所有键变量($et_key、$ct_key、$key)都是根据映射到数据库列名的下拉值生成的。例如:Php 用多个联接连接查询字符串,php,mysql,sql,Php,Mysql,Sql,我对连接和基于字段动态生成连接非常陌生 所有键变量($et_key、$ct_key、$key)都是根据映射到数据库列名的下拉值生成的。例如: $state = $_POST['geography']; $states = array('Alabama','Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District Of Columbia', 'Florida', '
$state = $_POST['geography'];
$states = array('Alabama','Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District Of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts ', 'Michigan', 'Minnesota', 'Mississippi ', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming');
$key = array_search($state, $states);
if ($key !== false) {
$state_key = $key+1;
}
这是我的完整查询代码。我主要困惑的是如何处理所有的“和”行——第一行不能有“和”,但就我所知,后面的行必须有。我不知道如何解决这个问题。我还没有重构这个或任何东西,很抱歉重复性太差
$query=("SELECT * FROM exchange");
if($et_key) {
$query .= " INNER JOIN`exchange_type` on `exchange_type`.exchangeID = exchange.exchangeID ";
}
if($ct_key) {
$query .= " INNER JOIN `company_type` ON `company_type`.exchangeID = exchange.exchangeID ";
}
if($key) {
$query .= " INNER JOIN `exchange_states` on `exchange_states`.exchangeID = exchange.exchangeID ";
}
if ($et_key || $ct_key || $key) {
$query .= " where ";
}
if($et_key) {
$query .= " and `exchange_type`.$et_key=1 ";
}
if($ct_key) {
$query .= " and `company_type`.$ct_key = 1 ";
}
if($key) {
$query .= " and exchange_states`.stateID = $state_key ";
}
if (!empty($keywork)) {
$query .= "and (exchange.`exchange-name` LIKE '%$search%' OR exchange.`description` LIKE '%$search%')";
}
echo $query;
更改此项:
if ($et_key || $ct_key || $key) {
$query .= " where ";
}
为此:
if ($et_key || $ct_key || $key) {
$query .= " where 1=1 ";
}
那么,“AND”都有意义了完美!我知道这很容易解决,但我被难住了。非常感谢。