Problema messaggio d'errore -Warning: mysqli_num_rows() expects parameter 1 to be mysqli_ etc etc...

Luigi Orlando

Nuovo Utente
21 Nov 2013
3
0
0
Buongiorno a tutti,
gestisco un sito (www.taralluccievin.it -giornale) da novembre 2012 con il csm Joomla e tophost. In passato erano già comparsi alcuni messaggi d'errore in homepage che ho risolto modificando alcune stringhe di codice grazie anche a quanto letto su questo forum. Sono alle prime armi come webmaster, infatti la progettazione del sito l'ha fatta un amico più esperto; io più che altro riesco a muovermi agevolmente nella gestione ordinaria e nella risoluzione dei problemi.
Purtroppo stamattina dopo l'aggiornamento di alcuni componenti è apparso questo messaggio di errore nelle pagine delle rubriche:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/mhd-01/www.taralluccievin.it/htdocs/libraries/joomla/database/database/mysqli.php on line 263

Ho ricercato il file incriminato, ma non so proprio come agire per risolvere il problema e eliminare il messaggio d'errore.
Questa è la parte di codice indicata nel warning:

260 /**
261 * Gets an importer class object.
262 *
263 * @return JDatabaseImporterMySQL An importer object.
264 *
265 * @since 11.1
266 * @throws JDatabaseException
267 */
268 public function getImporter()
269 {
270 // Make sure we have an importer class for this driver.
271 if (!class_exists('JDatabaseImporterMySQL'))
272 {
273 throw new JDatabaseException(JText::_('JLIB_DATABASE_ERROR_MISSING_IMPORTER'));
274 }
275
276 $o = new JDatabaseImporterMySQL;
277 $o->setDbo($this);
278
279 return $o;
280 }
281
282 /**
283 * Get the number of returned rows for the previous executed SQL statement.
284 *
285 * @param resource $cursor An optional database cursor resource to extract the row count from.
286 *
287 * @return integer The number of returned rows.
288 *
289 * @since 11.1
290 */
291 public function getNumRows($cursor = null)
292 {
293 return mysql_num_rows($cursor ? $cursor : $this->cursor);
294 }

Quale può essere il problema e l'eventuale soluzione? Grazie per l'aiuto
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
l'errore dice che la funzione si aspetta un valore positivo dall'esecuzione di una query
quindi in teoria la query va in errore
l'errore parla dell'estensione mysqli mentre nel codice che hai postato ci sono funzioni che utilizzano la vecchia estensione mysql
la questione si complica
forse hai aggiornato la versione di php la quale non accetta più istruzioni mysql
se cosi dovrai aggiornare tutto il sorgente o ritornare alla versione php precedente
 

Luigi Orlando

Nuovo Utente
21 Nov 2013
3
0
0
Ciao,
l'errore dice che la funzione si aspetta un valore positivo dall'esecuzione di una query
quindi in teoria la query va in errore
l'errore parla dell'estensione mysqli mentre nel codice che hai postato ci sono funzioni che utilizzano la vecchia estensione mysql
la questione si complica
forse hai aggiornato la versione di php la quale non accetta più istruzioni mysql
se cosi dovrai aggiornare tutto il sorgente o ritornare alla versione php precedente
Ciao e grazie per la risposta,
purtroppo ho sbagliato il codice che ho inserito nel mio messaggio originale perché avevo aperto anche mysql.php oltre a mysqli.php e ho copiato l'uno al posto dell'altro.
questa è la stringa di codice effettivamente accusata:
252 /**
253 * Get the number of returned rows for the previous executed SQL statement.
254 *
255 * @param resource $cursor An optional database cursor resource to extract the row count from.
256 *
257 * @return integer The number of returned rows.
258 *
259 * @since 11.1
260 */
261 public function getNumRows($cursor = null)
262 {
263 return mysqli_num_rows($cursor ? $cursor : $this->cursor);
264 }
265
266 /**
267 * Get the current or query, or new JDatabaseQuery object.
268 *
269 * @param boolean $new False to return the last query set, True to return a new JDatabaseQuery object.
270 *
271 * @return mixed The current value of the internal SQL variable or a new JDatabaseQuery object.
272 *
273 * @since 11.1
274 * @throws JDatabaseException
275 */
276 public function getQuery($new = false)
277 {
278 if ($new)
279 {
280 // Make sure we have a query class for this driver.
281 if (!class_exists('JDatabaseQueryMySQLi'))

In effetti ho aggiornato il modulo roksproket, una componente di sicurezza e joomla dalla versione 2.5.8 alla versione 2.5.16 e non capisco perché ho sia mysql.php che mysqli.php quando il mio database è mysqli!!
Da questo codice che ti ho messo sopra si capisce qualcosa??