2017-02-12 4 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 строк. Мне нужно назначить переменную PHP для данных из P1, P2, P3 и т. Д. На MON1; P1, P2, P3 и т. Д. На TUE1; так далее и так далее, пока мы не достигнем P6 на FRI2. Я действительно очень новичок в 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" 

Не забудьте заменить «TABLE» в SQL запросе с реальным именем таблицы, так что не было видно на скриншоте вы прилагается.

+0

Это прекрасно - спасибо! Кроме того, если у вас есть строка SELECT, вы используете «имя пользователя», когда нет столбца имени пользователя - вы имели в виду «день»? – Caspar

+0

Извините, забыли пометить вас. @ablopez – Caspar

+0

Поскольку в исходном коде, который вы отправили, вы указали параметр GET имени пользователя, я предположил, что вам все еще нужно его использовать, но если вам не нужна фильтрация, тогда не беспокойтесь, просто измените $ sql на '$ sql = SELECT * FROM TABLE ";' и $ results для '$ results = $ con> query ($ sql);' – ablopez

Смежные вопросы