Заполнение и ранжирование таблицы с помощью функции RANK () с использованием операторов PHP и SQL

#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). Я протестировал плагин с другим кодом, и он работает правильно.