0

我一直在为此烦恼,但无法让它发挥作用。这有什么问题?

        $query="Select studentid,firstname,lastname,pts from students where collegeid=4";
        $result=mysql_query($query);
        $row=mysql_fetch_array($result);
        $pts=$row['pts'];
        $name=$row['firstname']." ".$row['lastname'];
        $rank=  mysql_num_rows(queryMysql("Select distinct pts from students where pts>=$pts"));
        echo<<<_END
        <a href="student_profile.php?studentid=$row[studentid]" style="text-decoration: none;">
        <div class="apps_each your_rank">
            <span style="margin-right:5px;">$rank</span>
        <div class="dp_small_c"><img class="dp_small" src="upload/$row[studentid].jpg"/></div>
        <span class="apps_names">$name</span>
            <div style="float:right">
        <img src='pts.png' /><span>$row[pts]</span>
        <img src='level.png' /><span>Level 1</span>
        </div>
        </div>
        </a>

_结尾;

错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法。

令人惊讶的是,低于一个(删除 WHERE 子句)有效。为什么?

$row=mysql_fetch_array(mysql_query("Select studentid,pts,firstname,lastname from students"));

表结构:

表和它的列一切都很好,因为这个查询在其他任何地方都有效,只是在这里不行!

4

3 回答 3

0

您在评论中提到您想使用 PDO。以下是您可以尝试的方法:

$username = "enterUsername";
$password = "enterPass";
$conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);

$query = $conn->prepare("Select studentid,pts,firstname,lastname from students where collegeid=:id");

$query->execute(array(
    ':id' => 4
));

// get errors if there are
$errors = $query->errorInfo();
echo "<pre>";
print_r($errors);
echo "</pre>";

$results = $query->fetch(PDO::FETCH_ASSOC); // can also be fetchAll if you have more than 1 row.


// to test and check results
echo "<pre>";
print_r($results);
echo "</pre>";
于 2013-10-17T10:19:56.440 回答
0

如果$query在问题中返回一个空行,则它下面的变量保持未分配 - 即,$pts并且$name没有实体。

但是,它们下面的查询使用变量$pts,它可能必须存储一些值 - 如果不是,则会抛出上面发布的 MYSQL 错误。对这个查询使用函数 queryMysql() 进一步解决了这个问题,因为它的定义如下:

function queryMysql($query)
{
    $result=mysql_query($query) or die(mysql_error());
    return $result;
}

因此,MySql 错误。

于 2013-10-18T19:24:18.753 回答
-1

我会将此库用于所有 MySQL 查询 - http://www.meekro.com

您的选择查询变成这样:

// Load Library
require 'meekrodb.2.2.class.php';

// Setup DB Connection
DB::$user       = 'my_database_user';
DB::$password   = 'my_database_password';
DB::$dbName     = 'my_database_name';
DB::$host       = '123.111.10.23';

// Where clause
$collegeid = 4;

// Exec Query
$row = DB::queryFirstRow("Select studentid,pts,firstname,lastname from students where collegeid = %d", $collegeid);

来源:http ://www.meekro.com/docs.php#anchor_queryfirstrow

于 2013-10-17T10:20:05.690 回答