Php 查询不在if语句之后运行
在我的工作中,我们有一个模块/web应用程序,可以查询我们的DB,寻找有RSVP愿意再次与我们住在一起的学生。我们正在住宿和就餐——无论是在公寓还是在宿舍。当前的应用程序需要很长时间才能运行,我被要求通过给用户一个选项进行优化,以选择所讨论的学生是否是我们下面的怡和公寓的居民,或者他们是否住在宿舍。我有一个基本的if语句,它根据html选择菜单中的选择构造查询,然后使用构建的sql语句运行查询。出于某种原因,当我实现此更改时,不会返回任何结果。感谢您的帮助!我们总共运行了3个查询,一个主要查询获取所有居民,另一个查询检查仅适用于怡和居民的腾空ITV意图,还有一个查询适用于所有居民Php 查询不在if语句之后运行,php,mysql,sql,prepared-statement,Php,Mysql,Sql,Prepared Statement,在我的工作中,我们有一个模块/web应用程序,可以查询我们的DB,寻找有RSVP愿意再次与我们住在一起的学生。我们正在住宿和就餐——无论是在公寓还是在宿舍。当前的应用程序需要很长时间才能运行,我被要求通过给用户一个选项进行优化,以选择所讨论的学生是否是我们下面的怡和公寓的居民,或者他们是否住在宿舍。我有一个基本的if语句,它根据html选择菜单中的选择构造查询,然后使用构建的sql语句运行查询。出于某种原因,当我实现此更改时,不会返回任何结果。感谢您的帮助!我们总共运行了3个查询,一个主要查询获
try
{
if (isset($_POST['select']))
{
if ($_POST['select'] == 'jardine')
{
$jardine = true; // Neighborhood and Apartments include the Jardine under 'Site_name' column
$query = "SELECT * FROM av_user_hms_PatronAssignments a WHERE NOW() BETWEEN ElementStart AND ElementEnd
AND a.Site_name LIKE '%Neighborhood% AND a.Site_name LIKE '%Apartments%'
ORDER BY Last_Name, First_Name";
}
else
{
$jardine = false; // Everything else is Residence Halls
$query = "SELECT * FROM av_user_hms_PatronAssignments a WHERE NOW() BETWEEN ElementStart AND ElementEnd
AND a.Site_name NOT LIKE '%Neighborhood% AND a.Site_name NOT LIKE '%Apartments%'
ORDER BY Last_Name, First_Name";
}
$hms = new hms_helper();
// Run the query
$hmsRows = $hms->query_a($query);
//see if user has completed RSVP application
$query = "SELECT * FROM rsvp.application WHERE wid = ? AND termID = ?";
$apps = $mysqli->prepare($query) or throwNewException("Prepare error:".$mysqli->error." ".$query);
$term = getCurrentTerm();
$apps->bind_param("ii", $stmtArg,$term);
if ($jardine)
{
// also check Jardine Intent to Vacate
$query = "SELECT * FROM ITV.ITV WHERE WID = ? AND STR_TO_DATE(vacate_date,'%m/%d/%Y') > '".date("Y")."-01-01';";
$itv = $eITV->prepare($query) or throwNewException("Prepare error:".$eITV->error." ".$query);
$itv->bind_param("i", $stmtArg);
}
foreach($hmsRows as $k=>$a)
{
//$lastWID is used to keep track of last wid so that no entry is duplicated
$stmtArg = (int)$a["wid"];
$apps->execute();
$appResult = $apps->get_result();// get the result back
if ($jardine)
{
$itv->execute();
$itvResult = $itv->get_result();
if($itvResult->num_rows > 0) // if they are planning to leave jardine unset them
{
unset($hmsRows[$k]);
}
}
if($appResult->num_rows > 0) // if they have an application unset them
{
unset($hmsRows[$k]);// removes this entry from the array so it won't be displayed.
}
elseif($a['ID_Number'] == $lastWID)// don't show duplicates
{
unset($hmsRows[$k]);
}
$lastWID = $a['ID_Number'];
}
}
}
注:
hms_helper类中的所有内容都正常工作
我已经用我们的ODBC查询工具运行了这些查询,所有这些都可以工作
$\u POST['select']的传递是正确的,我有一些echo语句来检查这一点
execute调用用于运行$itv和$apps的查询
你一直设置$query,然后在再次设置之前不使用它…我不知道$jardine是什么意思,但如果它为false,你永远不会运行某些查询..?我正在将查询绑定到$apps和$itv,唯一要运行的另一个是主查询,它会捕获所有查询-在准备其他查询之前运行。是的,如果$jardine为false,则该查询已过时