在php寻呼机代码中检索sql查询错误

时间:2013-10-13 20:12:26

标签: php mysql sql pager

我的问题是我想要一个页面只显示10条记录 我在phpjabbers找到了这个很棒的代码:

    Host = "localhost"
    user="root"
    password=""(Nothing)

<?php
    $con = mysql_connect("localhost","root","") or die("Unable to connect");
    $db = mysql_select_db("test",$con) or die("Unable to select DB");

    if(isset($_GET['page']))
    {
        $page = $_GET['page'];
    }
    else
    {
        $page = 1;
    }

    $sf = ($page-1) * 10;
    $sql = "SELECT * FROM students LIMIT ".$sf.",10";
    $rs = mysql_query($sql,$con);
    //echo $rs;
    ?>
    <html>
    <head>
            <title>Pages</title>
    </head>
    <body>
        <?php
            $sql1 = "SELECT COUNT(name) FROM students";
            $rs1 = mysql_query($sql1,$con);
            $row1 = mysql_fetch_row($rs1);
            $total = $row1[0];
            $tp = ceil($total/10);

            for($i = 1; $i <= $tp; $i++)
            {
                echo "<a href='test.php?page=".$i."'>".$i."</a> ";
            }
        ?>
        <table>
            <tr>
                <th>Name</th>
                <th>Phone Number</th>
            </tr>
            <?php
                while($row = mysql_fetch_assoc($rs))
                {
            ?>
            <tr>
                <td><?php echo $row['name']; ?></td>
                <td><?php echo $row['ph_no']; ?></td>
            </tr>
            <?php
                }
            ?>
        </table>
        <?php
            $sql1 = "SELECT COUNT(name) FROM students";
            $rs1 = mysql_query($sql1,$con);
            $row1 = mysql_fetch_row($rs1);
            $total = $row1[0];
            $tp = ceil($total/10);

            for($i = 1; $i <= $tp; $i++)
            {
            echo "<a href='test.php?page=".$i."'>".$i."</a> ";
            }
        ?>
    </body>
</html>

当我在没有条件的情况下检索表数据时,如代码所示:

"SELECT * FROM students LIMIT ".$sf.",10";

它可以工作,但是当我添加一个像:

这样的条件时
"SELECT * FROM `students` where `Instructor-Email`=". $_SESSION['ID'] ." OR `Instructor-Email` IS NULL LIMIT".$sf.",10"

它没有用。

我怀疑我的查询语法,所以我下载了查询构建器程序(flyspeed sql查询),并将查询构建为:

"Select * From students Where (`Instructor-Email` = '. $_SESSION['ID'] .') Or (`Instructor-Email` Is Null) LIMIT 0,10" 

但仍然没有工作!

你能告诉我这是什么问题吗?感谢你的努力。

2 个答案:

答案 0 :(得分:0)

你应该在字段名称周围的查询中添加反引号像这样:

`Instructor-Email`=". $_SESSION['ID'] ." OR `Instructor-Email` IS NULL LIMIT".$sf.",10")

(如果该字段确实存在且包含破折号。)

答案 1 :(得分:0)

来自PHP manual

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回   resultset,mysql_query()在成功时返回资源,或者返回FALSE   错误。

由于您的错误在mysql_fetch_assoc()上声明了传递的布尔参数,因此请检查您对实际数据库的查询。 phpMyAdmin的。不要忘记检查$sf是否包含所有情况下的有效号码。

  

mysql_query()也会失败,如果用户没有,则返回FALSE   有权访问查询引用的表。

如果您从查询中收到任何结果,则可以与mysql_num_rows核对。 但首先,我建议您检查一下您是否对要查询的表格拥有所有必要的权利。

如果脚本中只有一个数据库连接,则不需要将您指定的$ con作为参数传递给进一步的mysql函数调用。

请参阅Lajos Veres的第一个答案,并始终添加反引号。