Announcement

Collapse
No announcement yet.

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

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

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

    Hi,

    ich versuche hier mit einem einzigen Query in PHP eine mySQL Funktion in einer Tabelle abzulegen.
    Geht das überhaupt in einem Query?

    So sieht das PHP Script aus:
    PHP Code:
    function createDBfunc(){
        
    $fquery "DELIMITER | CREATE FUNCTION IF NOT EXISTS 'SteamToInt' (steamid varchar(64)) RETURNS bigint(64) BEGIN declare authserver int; declare authid int; set authserver = cast(substr(steamid,9,1) as unsigned integer); set authid = cast(substr(steamid,11) as unsigned integer); return 76561197960265728+(authid*2)+authserver; END| DELIMITER ;";
        
    $fadress mysql_query($fquery);
        
    $fergebnis mysql_fetch_array($fadress);
        return 
    $fergebnis;

    Wenn ich das im Browser aufrufe bekomme ich die im Titel angegebene Fehlermeldung.

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in test.php on line 8
    (line 8 ist in test.php entsprechend die Zeile "$fergebnis = mysql_fetch_array($fadress);")
    Das Query schlägt also offenbar fehl, aber warum?

  • #2
    [QUOTE=Timiditas;202396]
    Hallo,
    ich habe zwar gar keine Ahnung von dem was du machen willst, aber mir hilft es immer zu sehen Ob der Query überhaupt korrekt am Server ankommt bzw. angenommen wird.

    Lass doch dazu mal den mysql_error() ausgeben:
    PHP Code:
    function createDBfunc(){
        
    $fquery "DELIMITER | CREATE FUNCTION IF NOT EXISTS 'SteamToInt' (steamid varchar(64)) RETURNS bigint(64) BEGIN declare authserver int; declare authid int; set authserver = cast(substr(steamid,9,1) as unsigned integer); set authid = cast(substr(steamid,11) as unsigned integer); return 76561197960265728+(authid*2)+authserver; END| DELIMITER ;";
        
    $fadress mysql_query($fquery);

    if(!
    $fadress){
    echo 
    mysql_error();
    }

        
    $fergebnis mysql_fetch_array($fadress);
        return 
    $fergebnis;

    Oder versuch es im PhpMyAdmin den Query abzusetzen.

    Soweit ich weiß kann man mit mysql_query auch nut ein Query absetzen. Willst du mehrere Querys auf einmal absetzten musst du auf die "mysqli"-Funktionen zurückgreifen.
    Zuletzt editiert von dependent; 19.08.2009, 15:49. Reason: Nachtrag

    Comment


    • #3
      [QUOTE=dependent;202397]
      Originally posted by Timiditas View Post
      Hallo,
      ich habe zwar gar keine Ahnung von dem was du machen willst, aber mir hilft es immer zu sehen Ob der Query überhaupt korrekt am Server ankommt bzw. angenommen wird.

      Lass doch dazu mal den mysql_error() ausgeben:
      PHP Code:
      function createDBfunc(){
          
      $fquery "DELIMITER | CREATE FUNCTION IF NOT EXISTS 'SteamToInt' (steamid varchar(64)) RETURNS bigint(64) BEGIN declare authserver int; declare authid int; set authserver = cast(substr(steamid,9,1) as unsigned integer); set authid = cast(substr(steamid,11) as unsigned integer); return 76561197960265728+(authid*2)+authserver; END| DELIMITER ;";
          
      $fadress mysql_query($fquery);

      if(!
      $fadress){
      echo 
      mysql_error();
      }

          
      $fergebnis mysql_fetch_array($fadress);
          return 
      $fergebnis;

      Oder versuch es im PhpMyAdmin den Query abzusetzen.

      Soweit ich weiß kann man mit mysql_query auch nut ein Query absetzen. Willst du mehrere Querys auf einmal absetzten musst du auf die "mysqli"-Funktionen zurückgreifen.
      Hmmm.:
      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 'DELIMITER | CREATE FUNCTION 'SteamToInt' (steamid varchar(64)) RETURNS bigint(64' at line 1

      Wenn ich den Query so direkt über mySQL Administrator absetze, bekomme ich den gleichen Fehler. Andererseits wird die Funktion aber korrekt übernommen, wenn ich im mySQL Query browser STRG+P (neue Prozedur anlegen) benutze, und dort den eigentlichen Code der Funktion eintrage.
      Die Syntax des 'CREATE FUNCTION' querys ist falsch.

      P.s.: Diese mySQL Funktion übernimmt einen String in dieser Form
      STEAM_0:1:1199
      und berechnet daraus einen eindeutigen Schlüssel als 64bit Ganzzahlenwert.
      Die Funktion an sich ist in Ordnung, ich bekomme sie nur nicht in die Tabelle. *kopfkratz*

      Comment

      Working...
      X