Php 从具有引用的表中检索记录

Php 从具有引用的表中检索记录,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我有这个分页代码,实际上它将检索我表student中的所有记录,我想要的是按年份级别检索引用的记录。代码如下: 谢谢你的帮助 <?php if (!isset($_POST['level'])) { $_POST['level'] = "undefine"; } $level = $_POST['level']; mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("kp_

我有这个分页代码,实际上它将检索我表student中的所有记录,我想要的是按年份级别检索引用的记录。代码如下:

谢谢你的帮助

<?php

if (!isset($_POST['level'])) {
    $_POST['level'] = "undefine";
}
$level = $_POST['level'];

mysql_connect("localhost", "root", "") or die(mysql_error());

mysql_select_db("kp_and_harang") or die(mysql_error());

if (!(isset($_GET['pagenum']))) {
    $pagenum = 1;
} else {
    $pagenum = $_GET['pagenum'];
}
$data = mysql_query("SELECT id,surname,firstname,middlename,level FROM students") or die(mysql_error());

$rows = mysql_num_rows($data);
$page_rows = 2;
$last = ceil($rows / $page_rows);

if ($pagenum < 1) {
    $pagenum = 1;
} elseif ($pagenum > $last) {
    $pagenum = $last;
}

$max = 'limit ' . ($pagenum - 1) * $page_rows . ',' . $page_rows;
$data_p = mysql_query("SELECT *,LPAD(id,4,'0') as id FROM students $max ") or die(mysql_error());

while ($info = mysql_fetch_array($data_p)) {
    echo "<tr class='tr1'>";
    echo "<center>";
    echo "<td class='1'>" . $info['id'] . "</td>";
    echo "<td class='1'>" . $info['surname'] . ", " . $info['firstname'] . " " . $info['middlename'] . "</td>";
    echo "<td class='1'>" . $info['level'] . "</td>";
    echo "</center>";
    echo "</tr>";

    echo "<br>";
}
echo "<p>";
echo " --Page $pagenum of $last-- <p>";
if ($pagenum == 1) {

} else {
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
    echo "----";
    $previous = $pagenum - 1;
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
}

echo " ---- ";

if ($pagenum == $last) {

} else {
    $next = $pagenum + 1;
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
    echo "----";
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
}
?> 

我已经重写了您的代码以使用mysqli

同样,您只需要在sql查询中添加一个“where”

<?php

if (!isset($_POST['level'])) {
    $_POST['level'] = "undefined";
}

$mysqli = new mysqli("localhost", "user", "password", "database");

$level = $mysqli->real_escape_string($_POST['level']);

if (!(isset($_GET['pagenum']))) {
    $pagenum = 1;
} else {
    $pagenum = $_GET['pagenum'];
}
$query = "SELECT id,surname,firstname,middlename,level FROM students";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

$rows = $result->num_rows;
$page_rows = 2;
$last = ceil($rows / $page_rows);

if ($pagenum < 1) {
    $pagenum = 1;
} elseif ($pagenum > $last) {
    $pagenum = $last;
}

$max = 'limit ' . ($pagenum - 1) * $page_rows . ',' . $page_rows;
if ($level == "undefined"){
$query = "SELECT *,LPAD(id,4,'0') as id FROM students $max" ORDER BY level;}
else{
$query = "SELECT *,LPAD(id,4,'0') as id FROM students $max where level = '$level' ORDER BY level";}
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
while ($info = $result->fetch_array(MYSQLI_BOTH)) {
    echo "<tr class='tr1'>";
    echo "<center>";
    echo "<td class='1'>" . $info['id'] . "</td>";
    echo "<td class='1'>" . $info['surname'] . ", " . $info['firstname'] . " " . $info['middlename'] . "</td>";
    echo "<td class='1'>" . $info['level'] . "</td>";
    echo "</center>";
    echo "</tr>";

    echo "<br>";
}
echo "<p>";
echo " --Page $pagenum of $last-- <p>";
if ($pagenum == 1) {

} else {
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
    echo "----";
    $previous = $pagenum - 1;
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
}

echo " ---- ";

if ($pagenum == $last) {

} else {
    $next = $pagenum + 1;
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
    echo "----";
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
}
?> 

我知道这太过分了,但是你应该使用mysqli-php插件。这里有一个关于如何开始的链接。你能解释一下“按年份级别检索引用记录”是什么意思吗?你的意思是按年份排序吗?是的。我想按级别对它们进行排序。好的,我的答案应该对你有用。它有错误解析错误:语法错误,意外的T_变量抱歉,这里缺少分号!您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1190行“where level=”undfine“附近使用的正确语法,您能给我一个到演示的链接吗?无需担心。我更改了您的“undefined”以匹配我的if语句,该语句查找是否无效。我相信现在应该可以了。