#php #mariadb #rank
#php #mariadb #ранжирование
Вопрос:
Я работаю с этой базой данных MariaDB:
Версия сервера: 10.3.31-MariaDB-log-cll-lve — MariaDB Server
Версия протокола: 10
Я хотел бы обновлять и ранжировать таблицу всякий раз, когда пользователи отправляют форму. Эта первая часть кода работает правильно, вставляя записи пользователя, когда он отправляет форму (я проверяю соединение при запуске, а также проверил базу данных, и она заполнена). На этом этапе запись была создана. (из //— ЧАСТЬ РАНЖИРОВАНИЯ————- в коде)
Теперь мне нужно ранжировать таблицу, поэтому я попытался использовать функцию RANK (), как указано в https://mariadb.com/kb/en/rank / Я много пробовал, но это не работает
add_action( 'gform_after_submission_13', 'myfunction', 10 , 1); // execute myfunction when user submit form 13
function myfunction($entry){
$nome = rgar( $entry, '1' );
$categoria = rgar( $entry, '4' );
$score = rgar( $entry, '2' );
$ig = rgar( $entry, '3' );
$servername = "xxxxxxxxxxx";
$username = "xxxxxxx";
$password = "xxxxxxxxxxxxxxxxxx";
$dbname = "xxxxxxxxxxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO Table1 (nome, categoria, score, ig)
VALUES ('$nome','$categoria','$score','$ig')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
//---RANKING PART-------------
$sql2="SELECT
RANK() OVER (PARTITION BY categoria ORDER BY score DESC) AS myrank,
nome, categoria, score, ig
FROM Table1 ORDER BY nome, score DESC";
if ($conn->query($sql2) === TRUE) {
echo "Ranking update";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
Когда я пытаюсь выполнить тестовую отправку в верхней части браузера, я читаю
Новая запись создана успешно Ошибка: ВСТАВИТЬ В Table1 (nome, categoria, score, ig) ЗНАЧЕНИЯ (‘testname’,’test category’,’576′,’test_ig’)
PS Я не знаю, полезно ли знать, что я вставил этот код в плагин сниппета WordPress (плагин для создания сниппета php). Я протестировал плагин с другим кодом, и он работает правильно.