Я пытаюсь преобразовать эти данные из базы данных «[29,0,246]». Это данные, которые он извлекает из одного из столбцов пользователя. Это похоже на то, как долго они были включены в минутах, а 3 значения данных измеряют для разных частей. Мне было интересно, сможете ли вы разделить их на 3 разных элемента и преобразовать в часовой формат. MySQL и PHP
if ( isset( $_POST['submit-search'] ) ) {
$search = mysqli_real_escape_string($conn, $_POST['search']);
$sql = "SELECT * FROM players WHERE name LIKE '%$search%'";
$result = mysqli_query($conn, $sql);
$queryResults = mysqli_num_rows($result);
if ( $queryResults > 0 ) {
while ($row = mysqli_fetch_assoc($result)) {
echo "<div class='article'>
<h1>".$row['name']."</h1>
<h2>". "Last connected at " .$row['last_seen']."<h2>
<h2>". "Cash: " .$row['cash']."<h2>
<h2>". "Bank Account: " .$row['bankacc']."<h2>
<h2>". "Time played: " .$row['playtime']."<h2>
</div>";
}
} else {
echo "There are no results matching your search";
}
}
Вам следует нормализовать БД. Не просто исправляйте это для этого процесса, вы снова столкнетесь с этой проблемой.
Сколько ожидается ли исследовательская работа от пользователей Stack Overflow? SO должно быть вашим последним портом захода, а не первым
Сначала вам нужно сообщить нам, какие цифры
Ваш сценарий широко открыт для Атака с использованием SQL-инъекции Даже если вы избегаете ввода, это небезопасно! Используйте подготовленные параметризованные операторы в API MYSQLI_ или PDO
[29,0,246] выглядит действительным массивом JSON @RiggsFolly explode(), возможно, не лучшая функция для обработки этих данных json_decode() - лучшая функция для этого. К сожалению, более низкие версии MySQL имеют очень незрелую обработку JSON. MySQL 8.0 имеет хороший оператор JSON_TABLE, который каким-то образом работает как функция PHP json_decode ().
@RaymondNijland Совершенно верно, я это пропустил. Ответ @KiKO мне нравится, но, похоже, не получил никаких голосов. Интересно, почему? Однако Explode также приведет к появлению OP, в то время как JSON может сбить с толку. Но я согласен, что использование json_decode(), похоже, мне подойдет. Предполагая, что все данные в этом столбце выглядят так






Вот строка, которую вы написали за целые часы:
echo round(array_sum(json_decode("[29,0,246]"))/60,2).' hours';
Это похоже на массив json, следовательно, json_decode(), затем мы суммируем полученный массив, делим на 60 минут и округляем.
Результат: 4.58 hours.
Предполагается, что строка всегда как минимум содержит [].
«Предполагается, что строка всегда, по крайней мере, содержит []». Технически здесь предполагается, что данные представляют собой действительный массив JSON, содержащий только числа .. По-прежнему +1 для ответа ..
@RaymondNijland Ну, вопрос говорит, что будут числа, а не сколько. Требование наличия [] делает его допустимым массивом json.
Да, в основном мы говорим о вопросе одно и то же, но только разные версии
Вы не думали заглянуть в руководство?
explode()