Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con un codice

  1. #1

    Problema con un codice

    Ciao,
    Ho un problema con un modulo del mio phpnuke.. mi da questo errore:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /membri/softwaremania/includes/sql_layer.php on line 238

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /membri/softwaremania/includes/sql_layer.php on line 238

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /membri/softwaremania/includes/sql_layer.php on line 238

    Vi posto la parte di codice del file sql_layer.php interessata:
    function sql_num_rows($res)
    {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $rows = mysql_num_rows($res);//(questa è la linea 238)
    return $rows;
    break;;

    Sapete dov'è l'errore?
    Grazie

  2. #2
    Dovresti anche postare l'interrogazione al db che crea quella variabile $res

  3. #3
    E' questa??
    /*
    * sql_num_rows($res)
    * given a result identifier, returns the number of affected rows
    */

  4. #4
    no, avrai una cosa del tipo
    $res=mysql_query(......
    devi postare quella parte di codice

  5. #5
    Sono andato indietro nel codice e ho trovato questo:
    case "MySQL":
    $res=@mysql_query($query, $id);
    return $res;
    break;;

    Se nn fosse quella la parte giusta, ti mando tutto il codice...

  6. #6
    Il problema sta nella query, quindi nel contenuto della variabile $query, devi controllare se quello che sta al suo interno è giusto, e se la query viene eseguita. Se non ci riesci posta tutto il codice che interroga il database

  7. #7
    Ti mando tutto il codice perchè nn so proprio dove mettere le mani...

    <?php

    /************************************************** **********************/
    /* PHP-NUKE: Web Portal System */
    /* =========================== */
    /* */
    /* Copyright (c) 2002 by Francisco Burzi */
    /* http://phpnuke.org */
    /* */
    /* postgres fix by Rubén Campos - Oscar Silla */
    /* */
    /* This program is free software. You can redistribute it and/or modify */
    /* it under the terms of the GNU General Public License as published by */
    /* the Free Software Foundation; either version 2 of the License. */
    /************************************************** **********************/

    if (eregi("sql_layer.php",$_SERVER['PHP_SELF'])) {
    Header("Location: ../index.php");
    die();
    }

    /* $dbtype = "MySQL"; */
    /* $dbtype = "mSQL"; */
    /* $dbtype = "postgres"; */
    /* $dbtype = "postgres_local";// When postmaster start without "-i" option. */
    /* $dbtype = "ODBC"; */
    /* $dbtype = "ODBC_Adabas"; */
    /* $dbtype = "Interbase"; */
    /* $dbtype = "Sybase"; */

    /*
    * sql_connect($host, $user, $password, $db)
    * returns the connection ID
    */


    class ResultSet {
    var $result;
    var $total_rows;
    var $fetched_rows;

    function set_result( $res ) {
    $this->result = $res;
    }

    function get_result() {
    return $this->result;
    }

    function set_total_rows( $rows ) {
    $this->total_rows = $rows;
    }

    function get_total_rows() {
    return $this->total_rows;
    }

    function set_fetched_rows( $rows ) {
    $this->fetched_rows = $rows;
    }

    function get_fetched_rows() {
    return $this->fetched_rows;
    }

    function increment_fetched_rows() {
    $this->fetched_rows = $this->fetched_rows + 1;
    }
    }



    function sql_connect($host, $user, $password, $db)
    {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $dbi=@mysql_connect($host, $user, $password);
    mysql_select_db($db);
    return $dbi;
    break;;

    case "mSQL":
    $dbi=msql_connect($host);
    msql_select_db($db);
    return $dbi;
    break;;


    case "postgres":
    $dbi=@pg_connect("host=$host user=$user password=$password port=5432 dbname=$db");
    return $dbi;
    break;;

    case "postgres_local":
    $dbi=@pg_connect("user=$user password=$password dbname=$db");
    return $dbi;
    break;;

    case "ODBC":
    $dbi=@odbc_connect($db,$user,$password);
    return $dbi;
    break;;

    case "ODBC_Adabas":
    $dbi=@odbc_connect($host.":".$db,$user,$password);
    return $dbi;
    break;;

    case "Interbase":
    $dbi=@ibase_connect($host.":".$db,$user,$password) ;
    return $dbi;
    break;;

    case "Sybase":
    $dbi=@sybase_connect($host, $user, $password);
    sybase_select_db($db,$dbi);
    return $dbi;
    break;;

    default:
    break;;
    }

    }

    function sql_logout($id)
    {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $dbi=@mysql_close($id);
    return $dbi;
    break;;

    case "mSQL":
    $dbi=@msql_close($id);
    return $dbi;
    break;;

    case "postgres":
    case "postgres_local":
    $dbi=@pg_close($id);
    return $dbi;
    break;;

    case "ODBC":
    case "ODBC_Adabas":
    $dbi=@odbc_close($id);
    return $dbi;
    break;;

    case "Interbase":
    $dbi=@ibase_close($id);
    return $dbi;
    break;;

    case "Sybase":
    $dbi=@sybase_close($id);
    return $dbi;
    break;;

    default:
    break;;
    }
    }


    /*
    * sql_query($query, $id)
    * executes an SQL statement, returns a result identifier
    */

    function sql_query($query, $id)
    {

    global $dbtype;
    global $sql_debug;
    $sql_debug = 0;
    if($sql_debug) echo "SQL query: ".str_replace(",",", ",$query)."
    ";
    switch ($dbtype) {

    case "MySQL":
    $res=@mysql_query($query, $id);
    return $res;
    break;;

    case "mSQL":
    $res=@msql_query($query, $id);
    return $res;
    break;;

    case "postgres":
    case "postgres_local":
    $res=pg_exec($id,$query);
    $result_set = new ResultSet;
    $result_set->set_result( $res );
    $result_set->set_total_rows( sql_num_rows( $result_set ) );
    $result_set->set_fetched_rows( 0 );
    return $result_set;
    break;;

    case "ODBC":
    case "ODBC_Adabas":
    $res=@odbc_exec($id,$query);
    return $res;
    break;;

    case "Interbase":
    $res=@ibase_query($id,$query);
    return $res;
    break;;

    case "Sybase":
    $res=@sybase_query($query, $id);
    return $res;
    break;;

    default:
    break;;

    }
    }

    /*
    * sql_num_rows($res)
    * given a result identifier, returns the number of affected rows
    */

    function sql_num_rows($res)
    {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $rows = mysql_num_rows($res); //riga 238
    return $rows;
    break;;

    case "mSQL":
    $rows=msql_num_rows($res);
    return $rows;
    break;;

    case "postgres":
    case "postgres_local":
    $rows=pg_numrows( $res->get_result() );
    return $rows;
    break;;

    case "ODBC":
    case "ODBC_Adabas":
    $rows=odbc_num_rows($res);
    return $rows;
    break;;

    case "Interbase":
    echo "
    Error! PHP dosen't support ibase_numrows!
    ";
    return $rows;
    break;;

    case "Sybase":
    $rows=sybase_num_rows($res);
    return $rows;
    break;;

    default:
    break;;
    }
    }

    /*
    * sql_fetch_row(&$res,$row)
    * given a result identifier, returns an array with the resulting row
    * Needs also a row number for compatibility with postgres
    */

    function sql_fetch_row(&$res, $nr=0)
    {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $row = mysql_fetch_row($res);
    return $row;
    break;;

    case "mSQL":
    $row = msql_fetch_row($res);
    return $row;
    break;;

    case "postgres":
    case "postgres_local":
    if ( $res->get_total_rows() > $res->get_fetched_rows() ) {
    $row = pg_fetch_row($res->get_result(), $res->get_fetched_rows() );
    $res->increment_fetched_rows();
    return $row;
    } else {
    return false;
    }
    break;;

    case "ODBC":
    case "ODBC_Adabas":
    $row = array();
    $cols = odbc_fetch_into($res, $nr, $row);
    return $row;
    break;;

    case "Interbase":
    $row = ibase_fetch_row($res);
    return $row;
    break;;

    case "Sybase":
    $row = sybase_fetch_row($res);
    return $row;
    break;;

    default:
    break;;
    }
    }

    /*
    * sql_fetch_array($res,$row)
    * given a result identifier, returns an associative array
    * with the resulting row using field names as keys.
    * Needs also a row number for compatibility with postgres.
    */

    function sql_fetch_array(&$res, $nr=0)
    {
    global $dbtype;
    switch ($dbtype)
    {
    case "MySQL":
    $row = array();
    $row = mysql_fetch_array($res);
    return $row;
    break;;

    case "mSQL":
    $row = array();
    $row = msql_fetch_array($res);
    return $row;
    break;;

    case "postgres":
    case "postgres_local":
    if( $res->get_total_rows() > $res->get_fetched_rows() ) {
    $row = array();
    $row = pg_fetch_array($res->get_result(), $res->get_fetched_rows() );
    $res->increment_fetched_rows();
    return $row;
    } else {
    return false;
    }
    break;;

    /*
    * ODBC doesn't have a native _fetch_array(), so we have to
    * use a trick. Beware: this might cause HUGE loads!
    */

    case "ODBC":
    $row = array();
    $result = array();
    $result = odbc_fetch_row($res, $nr);
    $nf = odbc_num_fields($res); /* Field numbering starts at 1 */
    for($count=1; $count < $nf+1; $count++)
    {
    $field_name = odbc_field_name($res, $count);
    $field_value = odbc_result($res, $field_name);
    $row[$field_name] = $field_value;
    }
    return $row;
    break;;

    case "ODBC_Adabas":
    $row = array();
    $result = array();
    $result = odbc_fetch_row($res, $nr);

    $nf = count($result)+2; /* Field numbering starts at 1 */
    for($count=1; $count < $nf; $count++) {
    $field_name = odbc_field_name($res, $count);
    $field_value = odbc_result($res, $field_name);
    $row[$field_name] = $field_value;
    }
    return $row;
    break;;

    case "Interbase":
    $orow=ibase_fetch_object($res);
    $row=get_object_vars($orow);
    return $row;
    break;;

    case "Sybase":
    $row = sybase_fetch_array($res);
    return $row;
    break;;

    }
    }

    function sql_fetch_object(&$res, $nr=0)
    {
    global $dbtype;
    switch ($dbtype)
    {
    case "MySQL":
    $row = mysql_fetch_object($res);
    if($row) return $row;
    else return false;
    break;;

    case "mSQL":
    $row = msql_fetch_object($res);
    if($row) return $row;
    else return false;
    break;;

    case "postgres":
    case "postgres_local":
    if( $res->get_total_rows() > $res->get_fetched_rows() ) {
    $row = pg_fetch_object( $res->get_result(), $res->get_fetched_rows() );
    $res->increment_fetched_rows();
    if($row) return $row;
    else return false;
    } else {
    return false;
    }
    break;;

    case "ODBC":
    $result = odbc_fetch_row($res, $nr);
    if(!$result) return false;
    $nf = odbc_num_fields($res); /* Field numbering starts at 1 */
    for($count=1; $count < $nf+1; $count++)
    {
    $field_name = odbc_field_name($res, $count);
    $field_value = odbc_result($res, $field_name);
    $row->$field_name = $field_value;
    }
    return $row;
    break;;

    case "ODBC_Adabas":
    $result = odbc_fetch_row($res, $nr);
    if(!$result) return false;

    $nf = count($result)+2; /* Field numbering starts at 1 */
    for($count=1; $count < $nf; $count++) {
    $field_name = odbc_field_name($res, $count);
    $field_value = odbc_result($res, $field_name);
    $row->$field_name = $field_value;
    }
    return $row;
    break;;

    case "Interbase":
    $orow = ibase_fetch_object($res);
    if($orow)
    {
    $arow=get_object_vars($orow);
    while(list($name,$key)=each($arow))
    {
    $name=strtolower($name);
    $row->$name=$key;
    }
    return $row;
    }else return false;
    break;;

    case "Sybase":
    $row = sybase_fetch_object($res);
    return $row;
    break;;

    }
    }

    /*** Function Free Result for function free the memory ***/
    function sql_free_result($res) {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $row = mysql_free_result($res);
    return $row;
    break;;

    case "mSQL":
    $row = msql_free_result($res);
    return $row;
    break;;


    case "postgres":
    case "postgres_local":
    $rows=pg_FreeResult( $res->get_result() );
    return $rows;
    break;;

    case "ODBC":
    case "ODBC_Adabas":
    $rows=odbc_free_result($res);
    return $rows;
    break;;

    case "Interbase":
    echo "
    Error! PHP dosen't support ibase_numrows!
    ";
    return $rows;
    break;;

    case "Sybase":
    $rows=sybase_free_result($res);
    return $rows;
    break;;
    }
    }

    ?>

  8. #8
    L'errore sta nella conenssione al database, devi vederre il file che richiama quella classe se prima richiama il metodo per la conenssione al database, poi effettua l'interrogazione, ed infine deve leggere le righe coinvolte nella query. Mi sono spiegato, quello che mi hai dato è solo la classe

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.