programing

PHP 및 SQL 문을 사용하여 RANK() 함수를 사용하여 표를 채우고 순위를 매김

mailnote 2023. 8. 9. 20:58
반응형

PHP 및 SQL 문을 사용하여 RANK() 함수를 사용하여 표를 채우고 순위를 매김

저는 이 MariaDB 데이터베이스로 일하고 있습니다.

서버 버전: 10.3.31-MariaDB-log-clle-lve - MariaDB Server

프로토콜 버전: 10

사용자가 양식을 제출할 때마다 표를 업데이트하고 순위를 매기고 싶습니다.이 코드의 첫 번째 부분은 올바르게 작동하며, 양식을 제출할 때 사용자 항목을 삽입합니다(실행 시 연결을 확인하고 데이터베이스도 확인하여 채워짐).이 시점에서 레코드가 생성되었습니다.( //---RANKING PART----------- 코드에서)

이제 나는 테이블의 순위를 매길 필요가 있어서 https://mariadb.com/kb/en/rank/ 에 보고된 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();
}

브라우저 상단에서 테스트 제출을 시도할 때 읽습니다.

새 레코드가 성공적으로 생성되었습니다. 오류: 표 1(이름, 범주, 점수, ig) 값('testname', 'testcategory', '576', 'test_ig')

추신. 제가 워드프레스의 스니펫 플러그인(php 스니펫을 만들기 위한 플러그인)에 이 코드를 넣었다는 것을 아는 것이 유용한지 모르겠습니다.다른 코드로 플러그인을 테스트해보니 정상적으로 작동합니다.

언급URL : https://stackoverflow.com/questions/70204029/populate-and-rank-a-table-using-rank-function-using-php-and-sql-statements

반응형