배경 : 특정 "역할"을 가진 사용자 (읽기 : 순위)가 하위 사용자를 만들고 유지할 수있게 해주는 제어판. foreach() 루프는 계정과 연결된 모든 하위 사용자를 쉽게 편집 할 수 있도록 텍스트 필드에 표시합니다. 아직 개발 중이지만 하위 사용자가 작성한 순서대로 표시되도록 쿼리를 주문하려고합니다.foreach 루프에서 ORDER BY하는 방법?
내가 주문하지 않는 이유는 루프마다 하나의 항목 만 선택하는 쿼리 때문입니다. 따라서 정렬 할 항목이 없습니다. 이 문제는 루프의 각 패스에서 동적이기 때문에 'username'필드의 배열 값으로 인해 루프 내부에 있어야하는 쿼리에서 발생합니다.
// check for existing subusers
$findsubusers = mysql_query("SELECT * FROM `custportal` WHERE `parentid` = '". $_SESSION['id'] ."'");
$subusernum = mysql_num_rows($findsubusers);
if ($subusernum > 0) {
// subusers present, print them to editable form
echo "<h2>Edit Existing Users</h2><br />";
echo "<form method=\"post\" action=\"edit.php\">";
for ($num=1; $num <= $subusernum; $num++) {
// print all subusers
$subuserinfo = mysql_fetch_array($findsubusers);
echo "<p>Name: ";
echo "<input type=\"text\" name=\"subusername[]\" value=\"". $subuserinfo['username'] ."\" /></p>";
echo "<p>Password: ";
echo "<input type=\"text\" name=\"subuserpass[]\" value=\"". $subuserinfo['password'] ."\" /></p>";
echo "<input type=\"hidden\" name=\"subuserid[]\" value=\"". $subuserinfo['id'] ."\" />";;
}
echo "<input type=\"submit\" name=\"submitchanges\" value=\"Submit Changes\" />";
echo "</form><br /><br />";
}
해결 방법 : 기본적으로
$names = array()
foreach ($_POST as $name) {
$names[] = "'" . mysql_real_escape_string($name) "'";
}
$where_in = implode(",", $names);
$query = "SELECT ... WHERE username IN ($where_in) ORDER BY username";
$stmt = mysql_query($query) or die(mysql_error());
를 A는 "어디에서"절은 이렇게 하나의 쿼리가 모두 가져 오는에 사용자 이름의 배열을 변환 :
$findsubusers = mysql_query("SELECT * FROM `custportal` WHERE `parentid` = '". $_SESSION['id'] ."' ORDER BY username ASC");
코드 스 니펫이 업데이트되었습니다.이 코드는 더 적절합니다. – SQueryL
나는 바보, 문제 해결. – SQueryL