0
그래서 기본적으로 랭킹 스크립트가 있는데 잘 작동합니다. 로그인 한 계정의 문자 만 보여줄 것입니다. 즉, accounts.id = $ userid를 의미합니다. 해당 부분을 다룹니다.MySQLi 랭킹 스크립트
내 문제는 어떻게 mysqli 쿼리를 봐야합니까? 나는 어디에 accounts.id = ". $ userid"를 넣으려고했다. 나는 $ SQL이 엉망이라고 생각하는 비 객체 에러를 얻고있다.
테이블 및 $ jobs 변수의 맨 위 누락 부분을 무시할 수 있습니다. 관련이 없습니다.
<?php
if (isset($_GET['start'])) {
if ($_GET['start'] >= 0 && $_GET['start'] <= 1000) {
$start = sql_injectionproof($_GET['start']);
} else {
die("Input not allowed.");
}
} else {
$start = 0;
}
$mysqli = new mysqli("XXXXXX", "XXXXX", "XXXXXXXX", "XXXXXXX");
$i = $start;
$sql = $mysqli->query("SELECT characters.name , characters.job, characters.level, characters.experience, characters.fame, accounts.isloggedin FROM characters, accounts WHERE accounts.username=".$username." and characters.accountid=accounts.id and characters.ismaster = 0 and accounts.isbanned = 0 ORDER BY characters.level DESC, characters.experience DESC LIMIT ".sql_injectionproof($start).", 500");
while ($outcome = $sql->fetch_array()) { ?>
<tr>
<td class="center" style="vertical-align: middle;">#<?php echo"".++$i.""; ?></td>
<td class="center" style="vertical-align: middle;"><img src="images/char/create.php?name=<?php echo "".$outcome['name'].""; ?>" alt="<?php echo $outcome['name']; ?>"></td>
<td class="center" style="vertical-align: middle;"><?php echo "".$outcome['name'].""; ?></td>
<td class="center" style="vertical-align: middle;"><?php echo "".$outcome['level'].""; ?></td>
<td class="center" style="vertical-align: middle;"><?php echo "".$jobs[$outcome['job']].""; ?></td>
</tr>
<?php
}
if ($start >= 0 && $start <= 1000) {
$nextstart = $start + 10;
if ($start >= 2) {
$prevstart = $start - 10;
} else {
$prevstart = 0;
}
} else if ($start > 180 && $start <= 1000) {
$prevstart = $start - 2;
$nextstart = 1000;
} else {
die("Hacks.");
}
?>
도움 주셔서 감사합니다. 항상 그 작은 것들. $ username이 위에 정의되어 있지만 그 부분을 붙여 넣지 않았습니다. 잘 작동합니다. –