2017-02-12 3 views
1

私はウェブサイトにログインしたときにプレーヤーの保存されたスコアを取得するためにしばらく前にコードを書きました。これは、AJAXを使用しており、このような少し何かを見て:SQLテーブル値を取得する最も効率的な方法は何ですか?

Javascriptを:

function getHighScore(user){ 
    $.get("getScore.php?userName="+user,function(data){ 
     console.log(data); 
       output = data; 
    }); 
} 

PHP:私は全体の束をつかむために持っているだろうと私は今日という事実に直面していた

<?php 
$username = strval($_GET['userName']); 

$con = mysqli_connect('localhost','XXXX','XXXX','XXXX'); 
if (!$con) { 
    die('Could not connect: ' . mysqli_error($con)); 
} else { 
$sql="SELECT * FROM users WHERE username = '".$username."'"; 
$result = mysqli_query($con,$sql); 

while($row = mysqli_fetch_array($result)) { 
    $wealth = $row['wealth']; 

    echo $wealth; 

    } 
} 

mysqli_close($con); 
//return $wealth; 
?> 

データベースからのデータのため、私が書いた古いハイスコアコードを見ました。私は情報を取得しているようなテーブルのスクリーンショットを添付します。とにかく、私は6列と10行から情報を取得する必要があります。私はMON1のP1、P2、P3などのデータにPHP変数を割り当てる必要があります。 TUE1のP1、P2、P3など。私たちがFRI2でP6に達するまで。私はPHPには全く新しいので、これをやり遂げる最善の方法は何でしょうか?

私が奇妙なことに質問した場合はお詫び申し上げます。あなたが何かを理解していないかどうか聞いてみてください。

ありがとうございました!

PS:P#_WORK列を無視します。私は

https://ibb.co/gq8u5a

+0

写真はありません。 http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry

答えて

1

私は、あなたがすべてを格納するオブジェクトを使用することをお勧めキーとして「日」の欄を使用して、別の値とPの*の列と思い、今それらを参照する必要はありません。 。ここでは、すぐに使用できるいくつかのコードです:それはあなたが添付のスクリーンショットには見えなかったとして

<?php 
$con = mysqli_connect('localhost','XXXX','XXXX','XXXX'); 
if(!$con) exit('Could not connect: ' . mysqli_error($con)); 

$username = $_GET['userName']; 

$sql = "SELECT * FROM TABLE WHERE username = '%s'"; 
$results = $con->query(sprintf($sql, $con->escape_string($username))); // Always escape parameters to prevent SQL injection attacks 

$data = new stdClass; // An empty object 

while($result = $results->fetch_object()){ 
    $day = $result->day; // Use the day as the key of the object 
    $data->{$day} = $result; 
} 

// Now we output the results below by accesing the data in a chain-like fashion by accesing the "data" object 
echo $data->MON1->P1 . '<br>'; // will output "Geo E" 
echo $data->FRI1->P4 . '<br>'; // will output "Maths" 
echo $data->THU2->P6 . '<br>'; // will output "DT" 

は、実際のテーブル名を持つSQLクエリに「TABLE」を置き換えてください。

+0

これは完璧です - ありがとう! SELECT行がある場合を除いて、ユーザー名列がないときには 'username'を使用します。 'day'を意味しましたか? – Caspar

+0

申し訳ありません、あなたのタグを忘れてしまった。 @ablopez – Caspar

+0

元のコードでは、ユーザ名GETパラメータを参照して投稿したので、まだ使用する必要があると思っていましたが、フィルタリングが不要ならば、$ sqlを '$ sql = SELECT * FROM TABLE ";'と$結果は '$ results = $ con-> query($ sql);' – ablopez

関連する問題