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 構文にエラーがあります。1 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

驚いたことに、以下の 1 つ (WHERE 句を削除) が機能します。なんで?

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

テーブル構造:

このクエリは他の場所でも機能しますが、ここでは機能しないため、テーブルとその列についてはすべて問題ありません。

4

3 に答える 3

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 に答える
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 に答える
-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 に答える