mysql_fetch_row(): supplied argument is not a valid MySQL result resource

Slain

Grünschnabel
Mahlzeit miteinander habe oben beschriebenes Problem,
hier der Code:
PHP:
	function getSetting($setting){
		$res=mysql::safe_query("SELECT value FROM `settings` WHERE setting=".$setting."");
		while($row=mysql_fetch_row($res)){
			echo $row[0];
		}
	}

hier noch die safe_query function:
PHP:
	function safe_query($query){
	mysql_query(mysql_real_escape_string($query));	
	}

habe schon alles mögliche ausprobiert aber es hilft einfach nix -.-
bin für jede hilfe dankbar
 
Entweder ist dein Prefix falsch oder du hast eine Spalte angegeben die nicht vorhanden ist.
Oder Probiere es mal so :
PHP:
 function getSetting($setting){
        $res=mysql::safe_query('SELECT value, setting FROM `settings` WHERE setting="'.$setting. '"');
        while($row=mysql_fetch_row($res)){
            echo $row[0];
        }
    }
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Du wirst sehen, dass dein mysql_real_escape_string() auf das ganze SQl alle deine Anfüuhrungszeichen innerhalb des SQL-Strings escapt. Damit kann MySQL nix mehr anfangen. mysql_real_escape_string() verwendet man auf die einzelnen Werte, nicht aber auf das ganez SQL.
 
Was willst du eigendlich damit bewirken ? $res=mysql::safe_query
Warum sind da zwei doppel Punkte ?

Versuch es mal nochmal so :

PHP:
function getSetting($setting){
        $res=mysql::safe_query('SELECT value, setting FROM `settings` WHERE setting = "'.$setting. '"');
        while($row=mysql_fetch_row($res)){
            echo $row[0];
        }
    }

Und hast du eine Verbindung zu Datenbank erstellt ?
 
@Fanseite:
Mit 2 : ruft er eine statische Methode seiner Klasse mysql auf. Ich seh jedoch zwar in der Definition der Methode das Wort static nicht.....

Ansonsten wie oben geschrieben. Das Problem liegt hier:
Du wirst sehen, dass dein mysql_real_escape_string() auf das ganze SQl alle deine Anfüuhrungszeichen innerhalb des SQL-Strings escapt. Damit kann MySQL nix mehr anfangen. mysql_real_escape_string() verwendet man auf die einzelnen Werte, nicht aber auf das ganez SQL.
 
Also müsste er es so machen :

PHP:
  function getSetting($setting){
$setting = mysql_real_escape_string($_GET oder $_POST['setting']);
        $res=mysql::safe_query("SELECT value FROM `settings` WHERE setting=".$setting."");
        while($row=mysql_fetch_row($res)){
            echo $row[0];
        }
    }  

 function safe_query($query){
    mysql_query($query);    
    }
 
Jepp. Und die Methode safe_query() müsste statisch sein
PHP:
static function safe_query($query){
 
So im groß und ganzen machen es mal so :


PHP:
  function getSetting($setting){
$setting = mysql_real_escape_string($_GET oder $_POST['setting']);
        $res=mysql::safe_query(' SELECT value, setting FROM `settings` WHERE setting = "'.$setting.'" ');
        while($row=mysql_fetch_row($res)){
            echo $row[0];
        }
    }  

 static function safe_query($query){
    mysql_query($query);    
    }
 
So im groß und ganzen machen es mal so :


PHP:
  function getSetting($setting){
$setting = mysql_real_escape_string($_GET oder $_POST['setting']);
        $res=mysql::safe_query(' SELECT value, setting FROM `settings` WHERE setting = "'.$setting.'" ');
        while($row=mysql_fetch_row($res)){
            echo $row[0];
        }
    }  

 static function safe_query($query){
    mysql_query($query);    
    }
Dann braucht er diesen Part aber auch nicht mehr:
PHP:
mysql::safe_query
dafür kann er dann:
PHP:
mysql_query
nutzen.

Quasi so:
PHP:
function getSetting( $setting )
{
    $setting = mysql_real_escape_string( $setting );

    $res = mysql_query("
        SELECT
            value,
            setting
        FROM
            settings
        WHERE
            setting = '$setting';
    ");

    while( $row = mysql_fetch_array( $res, MYSQL_ASSOC ) )
    {
        // mach was mit $row['value'] und $row['setting']
    }
}

Gruß
 
Zuletzt bearbeitet:
Zurück