0

データベースから 5 つのデータを取得したいと考えています。データベースは次のようになります...

id ユーザー名 パスワード q1 q2 q3 q4 q5 hscore lscore

q1 は質問 1 を表します。hscore と lscore は、ハイ/ラスト スコアを表します。

q1 q2 q3 q4 および q5 の値はすべて 5、-1、または 0 のいずれかです。5 の場合、これは問題が正解であることを意味し、-1 の場合は問題が間違っていることを意味し、0 の場合は問題が未解決であることを意味します。その質問はまだです。

すべての質問からすべての値を取得し、それらを合計したいと思います。これにより、画面に印刷してデータベースを更新できる最後のスコア値が得られます。

これは私の試みであり、うまくいかないようです。誰かが理由を知っているか、私の仕事をどのように達成できるかについて解決策を持っている場合は、お気軽に助けてください。

以下のコードは、q1 の値だけを取得しようとする試みであり、機能しません。データベースには複数の行がありますが、SELECT ステートメントで WHERE を使用できないと思いますか?

<?php

session_start();

$connection = mysql_connect("mysql15.000webhost.com", "a4987634_quiz", "jimbo1")
or die (mysql_error());

mysql_select_db("a4987634_quiz", $connection)
or die (mysql_error());

$username = $_SESSION["username"];
$password = $_SESSION["password"];

$sql = "Select * as total from users"

$result = mysql_query ($sql)

while($row = mysql_fetch_array($result)) {

$q1 = $row["q1"];

}

echo $q1 ;

?>
4

3 に答える 3

1

$qはサイクルの内側で定義され、その外側に表示されます。ここで$qは、すでに範囲外です。取得サイクルを作成print_r($q)またはprint_r($row)実行すると、結果が表示されます。

于 2012-10-28T19:19:55.713 に答える
0
$sql = "Select id, username, password, q1, q2, q3, q4, q5, hscore, lscore from users WHERE username = '" . mysql_real_escape_string($username) . "'";

if (!($result = mysql_query ($sql))) {
    echo "DB error: " . mysql_errno() . " => " . mysql_error() . "\n"; 
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found\n";
}
else if (mysql_num_rows($result) > 1) {
    echo "More than 1 row found for user $username\n";
}

$last_score = 0;

while($row = mysql_fetch_array($result)) {
    $user = $row["username"];
    $last_score = $row["q1"] + $row["q2"] + $row["q3"] + $row["q4"] + $row["q5"];
    echo "$user => $last_score\n";
}
于 2012-10-28T19:21:56.367 に答える
0
$sql = "Select field1, field2 from users";
$total= 0;
$result =mysql_fetch_object($resultmysql_query ($sql))
foreach ( $result as $value)
{
    $total = $value["field1"] + $value["field2"];
    echo "$total<br/>";
}
于 2012-10-28T20:18:09.187 に答える