복붙노트

PHP : 경고 : sort ()는 매개 변수 1이 배열이고, 주어진 자원이 [duplicate]

PHP

PHP : 경고 : sort ()는 매개 변수 1이 배열이고, 주어진 자원이 [duplicate]

정렬 () 함수를 사용하여 테이블 목록의 배열을 정렬하고 싶었지만 같은 종류의 경고가 나타납니다.  내 코드는 다음과 같습니다 :

 <?PHP 
     require_once("lib/connection.php"); 

     $result = mysql_query("SHOW TABLES FROM `st_db_1`");

     sort($result);
     foreach ($result as $result){
     echo $result ;
     } 
 ?>

그리고 내가 얻는 경고는 다음과 같다.

Warning: sort() expects parameter 1 to be array, resource given in C:\wamp\www\Copy (4)       of st_db_1\test_2.php on line 9
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Copy (4) of st_db_1\test_2.php on line 10

해결법

  1. ==============================

    1.경고는 매우 명확합니다 : mysql_query는 질의 결과가 아니라 자원을 가진 배열을 리턴하지 않습니다. 필요한 데이터를 반환하려면 (그리고 정렬 작업을 수행 할 수있는) mysql_fetch_array ()와 같은 함수가 필요하다.

    경고는 매우 명확합니다 : mysql_query는 질의 결과가 아니라 자원을 가진 배열을 리턴하지 않습니다. 필요한 데이터를 반환하려면 (그리고 정렬 작업을 수행 할 수있는) mysql_fetch_array ()와 같은 함수가 필요하다.

    mysql_query ()의 사용법은 http://nl3.php.net/mysql_query 매뉴얼을 참조하십시오.

    어쩌면 관련이 없지만 ORDER BY 을 쿼리에 추가하여 MySQL에서 결과를 즉시 정렬 할 수 있습니다.

  2. ==============================

    2.변수 $ result는 결과 형식의 리소스 일뿐입니다. 예를 들어 결과 집합에서 데이터를 가져와야합니다. mysql_fetch_assoc ().

    변수 $ result는 결과 형식의 리소스 일뿐입니다. 예를 들어 결과 집합에서 데이터를 가져와야합니다. mysql_fetch_assoc ().

    $result = mysql_query("SHOW TABLES FROM `st_db_1`");
    $array = array();
    while ($row = mysql_fetch_assoc($result)) {
        $array[] = $row["Tables_in_st_db_1"];
    }
    sort($array);
    foreach ($array as $item) {
       echo $item;
    }
    
  3. ==============================

    3.상상할 수있는 가장 효율적인 코드를 제공하지는 못 하겠지만,이게 무슨 일이 벌어지고 문제가 해결되는지 분명히해야합니다.

    상상할 수있는 가장 효율적인 코드를 제공하지는 못 하겠지만,이게 무슨 일이 벌어지고 문제가 해결되는지 분명히해야합니다.

     $result = mysql_query("SHOW TABLES FROM `st_db_1`");
    
     $my_array_of_table_names = array();
     while ( $row = mysql_fetch_array($result, MYSQL_NUM)) {
         $my_array_of_table_names[] = $row[0];
     }
     sort($my_array_of_table_names);
    
     foreach ($my_array_of_table_names as $table_name){
         echo "$table_name\n";
     }
    
  4. ==============================

    4.문제는 실제로 쿼리에서 데이터를 가져 오지 못한다는 것입니다.

    문제는 실제로 쿼리에서 데이터를 가져 오지 못한다는 것입니다.

    mysql_query ()는 레코드 셋을 제공하지 않는다.

    그것이하는 일은 데이터베이스를 쿼리하고 데이터를 얻기 위해 사용할 수있는 데이터베이스 리소스를 반환하는 것입니다.

    필요한 것은 mysql_query ()를 호출 한 후 mysql_fetch_array () 또는 이와 비슷한 함수를 호출해야한다. (사용할 수있는 기능 범위가 있지만이 경우에는 아마도 가장 좋은 기능 일 것입니다). 그런 다음 $ 결과가 아닌 데이터를 sort ()하십시오.

  5. ==============================

    5.분명히 말합니다 : 그것은 배열을 기대하고 당신은 다른 것을 전달합니다.

    분명히 말합니다 : 그것은 배열을 기대하고 당신은 다른 것을 전달합니다.

    $ 결과의 유형을 검사했다면 배열이 아니라는 것을 알았을 것입니다.

  6. from https://stackoverflow.com/questions/6169146/php-warning-sort-expects-parameter-1-to-be-array-resource-given by cc-by-sa and MIT license