Alt 07.06.2007, 13:42:51   #1
maxXx
Erfahrener Benutzer

ID: 61650
Lose senden

Reg: 04.05.2006
Beiträge: 272
Standard mysql_fetch_array(): supplied argument is not a valid MySQL result resource?

Hallo,
hab in einem Script folgende Fehlermeldung:

Zitat:
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-Code:
1:
2:
3:
4:
5:
6:
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?
 
maxXx ist offline   Mit Zitat antworten
Alt 08.06.2007, 08:30:46   #2
expert173
Delphi, PHP, mySQL
Benutzerbild von expert173

ID: 136245
Lose senden

expert173 eine Nachricht über ICQ schicken
Reg: 23.09.2006
Beiträge: 224
Standard

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
Definition of Stress:
The confusion created when one's mind overrides the body's desire to beat the living shit out of some asshole who desperately needs it.
expert173 ist offline   Mit Zitat antworten
Alt 08.06.2007, 19:17:50   #3
maxXx
Erfahrener Benutzer

ID: 61650
Lose senden

Reg: 04.05.2006
Beiträge: 272
Standard

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?
 
maxXx ist offline Threadstarter   Mit Zitat antworten
Alt 08.06.2007, 19:26:14   #4
expert173
Delphi, PHP, mySQL
Benutzerbild von expert173

ID: 136245
Lose senden

expert173 eine Nachricht über ICQ schicken
Reg: 23.09.2006
Beiträge: 224
Standard

nun,

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.

Wie gesagt: les dir mal die Dokus zu denen durch. Ich hab se dir auch extra verlinkt

mfg expert173
Definition of Stress:
The confusion created when one's mind overrides the body's desire to beat the living shit out of some asshole who desperately needs it.
expert173 ist offline   Mit Zitat antworten
Alt 08.06.2007, 19:35:04   #5
flaschenkind
Erfahrener Benutzer

ID: 118459
Lose senden

Reg: 20.04.2006
Beiträge: 4.530
Standard

Zitat:
Zitat von expert173 Beitrag anzeigen
ich würd sagen das is ganz simpel: Das was du da holst ist kein Array, und somit mosert die "mysql_fetch_array".
Zitat:
Zitat von expert173 Beitrag anzeigen
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?!
Zitat:
Zitat von expert173 Beitrag anzeigen
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-Code:
1:
2:
$t=mysql_fetch_array(mysql_query("SELECT UNIX_TIMESTAMP($mysql_timestamp) AS timestamp"));
echo 
mysql_error(); 
flaschenkind ist offline   Mit Zitat antworten
Alt 08.06.2007, 19:43:07   #6
maxXx
Erfahrener Benutzer

ID: 61650
Lose senden

Reg: 04.05.2006
Beiträge: 272
Standard

unter der bestehenden Meldung gibt er jeweils folgendes dazu aus:

PHP-Code:
1:
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near '12:19:50) AS timestamp' at line 1 
 
maxXx ist offline Threadstarter   Mit Zitat antworten
Alt 08.06.2007, 19:48:17   #7
expert173
Delphi, PHP, mySQL
Benutzerbild von expert173

ID: 136245
Lose senden

expert173 eine Nachricht über ICQ schicken
Reg: 23.09.2006
Beiträge: 224
Standard

Zitat:
Zitat von flaschenkind Beitrag anzeigen
Was laberst du da fürn Bullshit?!
Nun,
ich war jetzt davon ausgegangen das die Anfrage auch mit der Struktur der DB übereinstimmt, aber dem scheint ja nicht so zu sein.

na "flaschenkind" dann liefer doch mal eine Patentlösung wenn du meinst du kannst es besser.

mfg expert173
Definition of Stress:
The confusion created when one's mind overrides the body's desire to beat the living shit out of some asshole who desperately needs it.
expert173 ist offline   Mit Zitat antworten
Alt 08.06.2007, 19:57:36   #8
flaschenkind
Erfahrener Benutzer

ID: 118459
Lose senden

Reg: 20.04.2006
Beiträge: 4.530
Standard

Zitat:
Zitat von expert173 Beitrag anzeigen
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.

Zitat:
Zitat von maxXx Beitrag anzeigen
unter der bestehenden Meldung gibt er jeweils folgendes dazu aus:

PHP-Code:
1:
You have an error in your SQL syntaxcheck 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
flaschenkind ist offline   Mit Zitat antworten
Alt 08.06.2007, 19:58:03   #9
chrissel
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose senden

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.495
Standard

PHP-Code:
1:
2:
3:
4:
5:
6:
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...

Zitat:
Zitat von maxXx
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-Code:
1:
2:
3:
4:
5:
6:
7:
8:
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

Geändert von chrissel (08.06.2007 um 20:03:42 Uhr)
chrissel ist offline   Mit Zitat antworten
Alt 08.06.2007, 21:51:52   #10
maxXx
Erfahrener Benutzer

ID: 61650
Lose senden

Reg: 04.05.2006
Beiträge: 272
Standard

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.
 
maxXx ist offline Threadstarter   Mit Zitat antworten
Alt 08.06.2007, 21:54:31   #11
chrissel
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose senden

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.495
Standard

Zitat:
Zitat von maxXx Beitrag anzeigen
[..]in der db ist der timestamp aber ganz korrekt mit uhrzeit gespeichert.
Wie sieht denn der Eintrag in der DB aus? Ich konnte aus dem Fehler leider nur die Std:Min:Sek entnehmen

Erster oder Zweite Version? Welche haste genommen?
chrissel ist offline   Mit Zitat antworten
Alt 08.06.2007, 22:07:48   #12
maxXx
Erfahrener Benutzer

ID: 61650
Lose senden

Reg: 04.05.2006
Beiträge: 272
Standard

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
 
maxXx ist offline Threadstarter   Mit Zitat antworten
Alt 08.06.2007, 22:30:56   #13
chrissel
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose senden

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.495
Standard

Dann nimm mal:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
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
chrissel ist offline   Mit Zitat antworten
Alt 08.06.2007, 22:38:30   #14
maxXx
Erfahrener Benutzer

ID: 61650
Lose senden

Reg: 04.05.2006
Beiträge: 272
Standard

ne, da wird dann lediglich "05/29/2005" ausgegeben.
 
maxXx ist offline Threadstarter   Mit Zitat antworten
Alt 08.06.2007, 22:52:33   #15
chrissel
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose senden

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.495
Standard

Zitat:
Zitat von maxXx Beitrag anzeigen
ne, da wird dann lediglich "05/29/2005" ausgegeben.
Was ausgegeben wird kann ich auch nicht anhand dieser Funktion erkennen
Sie rechnet nur ein datum in ein Timestamp um, aber die Ausgabe ist wo anders in deinem Script.
chrissel ist offline   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit function.mysql-result mydoys.de Programmierung 7 22.08.2008 16:22:04
[JavaScript] Übergabe eines HTML-Elements als Argument glowhand Programmierung 6 24.10.2007 10:58:53
[PHP/MySQL] mysql_fetch_object(): supplied argument... unregiert Programmierung 15 25.12.2006 02:27:47
[PHP/MySQL] supplied argument is not a valid MySQL result resource theHacker FAQ und Archiv 0 29.04.2006 15:57:29


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19:32 Uhr.