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

maxXx

Well-known member
ID: 61650
L
4 Mai 2006
275
17
Hallo,
hab in einem Script folgende Fehlermeldung:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web0/html/... on line 283

Scriptzeilen in diesem Bereich:

PHP:
function time_convert($mysql_timestamp) {
    global $config;
    $t=mysql_fetch_array(mysql_query("SELECT UNIX_TIMESTAMP($mysql_timestamp) AS timestamp"));
    $t[timestamp] += ($config[timezone] * 3600);
    return $t[timestamp];
}


Wo liegt nun der Fehler?
 
nun,

ich würd sagen das is ganz simpel: Das was du da holst ist kein Array, und somit mosert die "mysql_fetch_array".

Vielleicht nochmal die Doku von PHP/MySql lesen?

mfg expert173
 
naja, das ist ned von mir, sondern tritt im Script "osticket" auf. eigentlich recht professionell ?!


D.h. ? Hast du vllt. auch gleich n Lösungsvorschlag?
 
ich würd sagen das is ganz simpel: Das was du da holst ist kein Array, und somit mosert die "mysql_fetch_array".
ja nach dem wie die DB aufgebaut ist würd ichs mal mit mysql_fetch_result() oder mysql_fetch_row() oder mysql_fetch_object() versuchen.
Was laberst du da fürn Bullshit?! :roll:
Wie gesagt: les dir mal die Dokus zu denen durch. Ich hab se dir auch extra verlinkt ;)
Das solltest du eher machen.


Zu deinem Problem:
Schreib mal folgendes und guck, was er ausgibt:
PHP:
$t=mysql_fetch_array(mysql_query("SELECT UNIX_TIMESTAMP($mysql_timestamp) AS timestamp"));
echo mysql_error();
 
unter der bestehenden Meldung gibt er jeweils folgendes dazu aus:

PHP:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '12:19:50) AS timestamp' at line 1
 
na "flaschenkind" dann liefer doch mal eine Patentlösung wenn du meinst du kannst es besser.
Tu ich auch.
mysql_fetch_array() arbeitet genauso wie mysql_fetch_object() und mysql_fetch_row(). Nur dort liegt die Rückgabe von MySQL als Array vor und nicht als Object wie bei mysql_fetch_object() mysql_result() ist veraltet.

unter der bestehenden Meldung gibt er jeweils folgendes dazu aus:

PHP:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '12:19:50) AS timestamp' at line 1
Hab mir die Query jetzt mal genau angeguckt. Das muss man nicht über SQL machen.
Ich vermute mal du willst den Timestamp einer bestimmten Zeit? Guck dir mal mktime() an ;)
 
PHP:
function time_convert($mysql_timestamp) {
    global $config;
    $t=mysql_fetch_array(mysql_query("SELECT UNIX_TIMESTAMP('$mysql_timestamp') AS timestamp"));
    $t[timestamp] += ($config[timezone] * 3600);
    return $t[timestamp];
}

So dürfte es klappen ;)

EDIT:
ähhm...

maxXx schrieb:
naja, das ist ned von mir, sondern tritt im Script "osticket" auf. eigentlich recht professionell ?!

Wenn ich mir den Code ansehe eher nicht.
Das ist eine unnötige Query^^
So etwas kann auch PHP ;)

=>

PHP:
function time_convert($mysql_timestamp) {
    global $config;
    $time = explode(":", $mysql_timestamp);
    $t=mktime($time[0], $time[1], $time[2], date("m"), date("d"), date("Y"));;
    $t += ($config[timezone] * 3600);

    return $t;
}

Ungetestet
 
Zuletzt bearbeitet:
ja, es geht dabei um nen spezielles Datum, also wann das Ticket erstellt wurde.
danke chrissel, der fehler ist zwar weg, doch erscheint da dann ne falsche datumsanzeige, 30/8/2007 ..

in der db ist der timestamp aber ganz korrekt mit uhrzeit gespeichert. :-?
 
aso ja, sry. ;)

Also in der ersten Version zeigt er zumindest die korrekten Daten an.
Kannst du noch die Uhrzeit + die deutsche Datumsanzeige machen?

Eintrag in der DB:

2007-06-02 22:10:39
 
Dann nimm mal:

PHP:
function time_convert($mysql_timestamp) {
	global $config;
	$time = preg_split("[-\s:]", $mysql_timestamp);
	$t = mktime($time[3], $time[4], $time[5], $time[1], $time[0], $time[3]);;
	$t += ($config[timezone] * 3600);

	return $t;
}

Auch ungetestet
 
?!
Es geht doch lediglich um diese paar Codezeilen + DB Eintrag nehm ich an.

hier die komplette Datei als .txt

Die Funktion rechnet nur ein Datum um in einen Timestamp und rechnet da dann noch (ich nehme an) die Zeitzoneneinstellung drauf.
Als Rückgabe der Funktion bekommt man eine 10stellige Zahl, und kein Datum ;)

Deine Datei bringt leider auch nichts ;) Denn ich weiß nicht wo du deine Ausgabe bekommst^^