我从Android传递JSON输入,并在此基础上动态构建一个Query,然后在DB中运行它,将结果传递给Android。我可以构建查询,但无法在查询之间添加AND
。
$QueryString="SELECT * FROM `table` WHERE";
if ( (isset($val1) && !empty($val1)) ) {
$QueryString1 .= " `it` IN ('$val1')";
}
if ((isset($val2) && !empty($val2))) {
$QueryString1 .= " `Re` IN ('$val2')";
}
if ((isset($stringgen) && !empty($stringgen))) {
$QueryString1 .= " $stringgen";
}
if ((isset($val4) && !empty($val4))) {
$QueryString1 .= " `Year` IN ('$val4')";
}
$stringgen1 = implode(' AND ', $QueryString1); //Aware that implode can be performed using Array
我试着像一样在字符串的末尾添加AND
$QueryString1 .= " `Re` IN ('$val2') AND"
这是与输入的组合一起工作的。但当我只传递一个输入时,它就不起作用了。
我的完整SQL查询看起来像:
SELECT * FROM Movies WHERE `it` IN ($val1) AND `Re` IN ('$val2') AND $stringgen AND `Year` IN ('$val4')
除了内爆"AND"之外,还有其他方法吗?
在使用内爆之前,需要在数组中添加SQL WHERE子句。
$QueryString = "SELECT * FROM `table`";
$QueryWhere = array();
if ( (isset($val1) && !empty($val1)) ) {
$QueryWhere[] = "`it` IN ('$val1')";
}
if ((isset($val2) && !empty($val2))) {
$QueryWhere[] = "`Re` IN ('$val2')";
}
if ((isset($stringgen) && !empty($stringgen))) {
$QueryWhere[] = "$stringgen";
}
if ((isset($val4) && !empty($val4))) {
$QueryWhere[] = "`Year` IN ('$val4')";
}
$QueryString .= (!empty($QueryWhere) ? ' WHERE ' : '') . implode(' AND ', $QueryWhere);
无需使用isset和!一起清空
<?php
$QueryString = "SELECT * FROM `table` WHERE";
if (!empty($val1))
{
$QueryString1 .= " `it` IN ('$val1')";
}
if (!empty($val2))
{
$QueryString1 .= " && `Re` IN ('$val2')";
}
if (!empty($stringgen))
{
$QueryString1 .= " && $stringgen";
}
if (!empty($val4))
{
$QueryString1 .= " && `Year` IN ('$val4')";
}
// Remove && from starting and ending of string
$stringgen1 = trim($QueryString1, "&&");
?>