私の職場では、DB にクエリを実行するモジュール/Web アプリケーションがあり、アパートまたは学生寮のいずれかで、RSVP で再び私たちと一緒に暮らす学生を探しています (私たちは住宅とダイニングです)。現在のアプリケーションは実行に時間がかかるため、問題の学生が私たちのアパートの居住者 (下の Jardine) であるか、寮に住んでいるかを選択するオプションをユーザーに提供して最適化するように依頼されました。HTML選択メニューからの選択に基づいてクエリを構築し、構築されたSQLステートメントでクエリを実行する基本的なifステートメントがあります。何らかの理由で、この変更を実装すると、結果が返されません。どんな助けでも大歓迎です!合計 3 つのクエリを実行しています。1 つはすべての居住者を取得するメイン クエリで、もう 1 つは「退去の意図 (ITV)」をチェックするクエリです。
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 クエリ ツールを使用してクエリを実行しましたが、それらはすべて機能します。
- $_POST['select'] が正しく渡されています。これを確認するためにいくつかの echo ステートメントを使用しました。
- execute 呼び出しは、$itv および $apps (準備済み) のクエリを実行するものです。