Newsgroup: it.comp.www.php
Titolo: Errore nella query: non capisco dove

ecco il codice:
$id = $_GET["id"];
 $link = mysql_connect ($dbhost, $dbname, $dbpass) or die ("Non riesco a
connettermi");
 $sql = "SELECT * FROM mf_album WHERE id='$id'";
 $result = mysql_query ($sql) or die ( "Non riesco ad eseguire la richiesta
$sql");
 $nrows  = mysql_num_rows ($result) or die ( "Non riesco ad eseguire la
richiesta");
                //questo mi ritorna l'errore
 $row  = mysql_fetch_array($result) or die ( "Non riesco ad eseguire la
richiesta");
                // anche questo mi ritorna l'errore
Ho provato a usare   echo mysql_error();
ma non riporta nessun errore...
Come posso fare per capire dove si blocca la richiesta?

 $link = mysql_connect ($dbhost, $dbname, $dbpass)
http://www.php.net/mysql_connect
e poi 
http://www.php.net/mysql_select_db
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1

 ma non riporta nessun errore...
In effetti č il codice che non va....
Dai un occhiata alle strutture di controllo di PHP... scaricati il manuale!
Francesco

 $sql");
Ah... aggiusta anche questo con l'if come indicato nel post precedente.
Ri-Ciao!
Francesco

 
http://www.php.net/mysql_select_db
su questo invece avrei da chiederti qualcosa:
ho visto che ci sono molti modi diversi per selezionare il db e alla fine ho
usato quello del sito ufficiale.
Il punto è che se non uso mysql_select_db() tutto funziona regolarmente.
Dipende dal fatto che ho solo un db?
E' grave non usarlo oppure è solo una questione di portabilità?
Luciano

>  $sql = "SELECT * FROM mf_album WHERE id='$id'";
Il campo id è un interno o una stringa?
Se è un intero il test lo devi fare senza le ''.
$sql = "SELECT * FROM mf_album WHERE id=$id";
Ciao
Marco

     die("Non riesco ad eseguire la richiesta");
sinceramente non č questo il punto in quanto ho usato quel controllo solo
per vedere se si bloccava li...
non mi interessa controllarlo, volevo capire perchč non  andava.
E' come se il risultato della query non fosse regolare.
Quali sono i controlli per verificare i dati?
Per esempio
print_r
mysql_error ()
etc.
Grazie

 Se è un intero il test lo devi fare senza le ''.
Ho provato in entrambi i modi... non sembra quello il problema.
Ho provato anche ad inserire un numero manualmente ma è lo stesso.
supplied argument is not a valid MySQL result resource

 E' grave non usarlo oppure h solo una questione di portabilit`?
Personalmente utilizzo questo sistema per gestire tutte le connessioni
e le query MySQL nei siti in cui non utilizzo framework di qualche tipo
(es PEAR o MetaBase), e' up po' rozzo, ma funzionale per la maggior
parte degli scopi.
define ("DB_DEBUG", false);
function dbconnect ($dbname = "test", $user = "nobody", $password = "",
$server = "127.0.0.1")
{
	if (!($mylink = @mysql_connect ($server, $user, $password)))
	{
		if (DB_DEBUG) 
		{ $err_msg = "Error connectiong Server: " . $server . " User: " .
$user . " Passwd: " . $password . "\n" . mysql_errno() . ": " .
mysql_error() . "\n"; }
		else
		{ $err_msg = "Error executing query!"; }
		die($err_msg);
	}
	if (!@mysql_select_db($dbname))
	{
		if (DB_DEBUG) 
		{ $err_msg = "Error selecting DB: " . $dbname . "\n" . mysql_errno()
. ": " . mysql_error() . "\n"; }
		else
		{ $err_msg = "Error selecting DB!"; }
		die($err_msg);
	}
}
function safe_query ($query = "")
{
	if (DB_DEBUG) 
	{ $err_msg = "Error executing query: " . $query . "\n" . mysql_errno()
. ": " . mysql_error() . "\n"; }
	else
	{ $err_msg = "Error executing query!"; }
 
	if (empty($query)) { return False; }
	$result = mysql_query($query) or die($err_msg);
	return $result;
}
function safe_set(&$var_true,$var_false="")
{
	if (isset ($var_true))
	{ return true; }
	else
	{
		$var_true = $var_false;
		return false;
	}
}
function safe_db_set(&$var_true,$var_false="")
{ return stripslashes (safe_set ($var_true, $var_false)); }
//Struttura di una query di selezione:
<?php 
 db_connect ("news", "root", "", "127.0.0.1");
 $sql_search = "SELECT * FROM tblNews ORDER BY NewsDate DESC LIMIT 0,5";
 $rs_search = safe_query ($sql_search);
 if (($rs_search) && (mysql_num_rows ($rs_search) > 0))
 {
	while ($row_search = mysql_fetch_assoc ($rs_search)) 
	{
		safe_db_set ($row_search["IDNews"], -1);
		safe_db_set ($row_search["Title"], "");
		safe_db_set ($row_search["NewsDate"], "");
 
		print ($row_search["Title"] . ": " . $row_search["NewsDate"]);
	}
	mysql_free_result ($rs_search);
 }
 else
 { print ("Non ci sono news in archivio."); }
?>


 strano e probabilmente errato.
Be, i dati li prendo da un include di configurazione.
Ma del resto se c'erano problemi nella connessione al db lo script me li
avrebbe ritornati.
Cosě non č ...

Problema Risolto