Anzeige:
Ergebnis 1 bis 6 von 6

Thema: MySQL Stored Procedure OUT-parameter in PHP

  1. #1
    Registrierter Benutzer Avatar von basti1985
    Registriert seit
    05.06.2007
    Beiträge
    30

    MySQL Stored Procedure OUT-parameter in PHP

    hallo ich versuche schon seit tagen irgendwie einen OUT-parameter aus einer SP in PHP anzeigen zu lassen .. doch irgendwie will der nicht so recht
    haputsächlich geht es um die ausgabe in zeile 14 (fett)

    Code:
    <?php
    $mysql = mysql_connect('localhost', 'root', 'diablo');
    mysql_select_db('test', $mysql);
    $rs = mysql_query("call get_users('joey', @total);");
    while($row = (mysql_fetch_assoc($rs)))
    {
    print_r($row);
    echo '<br />';
    }
    
    
    // now get the @total var
    $rs2 = mysql_query("select @total;");
    $total = mysql_fetch_assoc($rs2);
    print_r($total);
    
    echo "Your Query: " . $rs2 . "<br>";
    echo "Error: (" . mysql_errno() . ") " . mysql_error()."<br>";
    
    $pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', 'diablo');
    $data = $pdo->query("call get_users('joey', @totalUsers);")->fetchAll(PDO::FETCH_ASSOC);
    $total_count = $pdo->query("select @totalUsers;")->fetchAll(PDO::FETCH_ASSOC);
    print_r($data);
    echo '<br />';
    print_r($total_count);
    ?>
    Code:
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in line 14
    Your Query: 
    Error: (2014) Commands out of sync; you can't run this command now
    der grundgedanke stammt von dieser bzw dieser seite

    lass ich das ganze hingegen in der MySQL-console laufen gibts keine probleme

    MySQL-Server: 5.1.37
    MySQL-Client: 5.1.11
    PHP: 5.3.0
    CPU: P4 3.0 GHz | RAM: 1024MB CL2 DDR | Grafik: GeForce 6800 XT dual-head (2x 19") |
    HDD:
    3x 160GB + 1x 250GB als RAID 1 bzw 5 | OS: Ubuntu 8.04

  2. #2
    Registrierter Benutzer
    Registriert seit
    12.05.2009
    Beiträge
    12
    Die Fehlermeldung ist eindeutig. Du hast der Funktion einen Bool Wert übergeben
    anstatt der Resource ID der vorherigen DB Abfrage.

  3. #3
    Registrierter Benutzer Avatar von basti1985
    Registriert seit
    05.06.2007
    Beiträge
    30
    ja die fehlermeldung ist recht eindeutig .... nun dem dem zusammenhang etwas verwirrend ...

    mit PDO funktioniert das ganze ja ...

    was also müsste geändert / angepasst werden
    CPU: P4 3.0 GHz | RAM: 1024MB CL2 DDR | Grafik: GeForce 6800 XT dual-head (2x 19") |
    HDD:
    3x 160GB + 1x 250GB als RAID 1 bzw 5 | OS: Ubuntu 8.04

  4. #4
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    mit mqsli sollte es funktionieren,
    im php-manual berichtet einer von dem bedarf die Datenbankverbindung zu schliessen nach der ersten abfrage und wiederöffnen, könnte an der guten alten mysql extension zu liegen.

  5. #5
    Registrierter Benutzer Avatar von basti1985
    Registriert seit
    05.06.2007
    Beiträge
    30
    ich hab des jetzt nochmal mit mysqli versucht ... jedoch mit nem ähnlichen problem

    Code:
    <?php
    $mysql = mysql_connect('localhost', 'root', 'diablo',false,65536);
    mysql_select_db('test', $mysql);
    $rs = mysql_query("call get_users('joey', @total);");
    while($row = (mysql_fetch_assoc($rs)))
    {
    print_r($row);
    echo '<br />';
    }
    
    mysql_close($mysql);
    
    // now get the @total var
    $rs2 = mysql_query("select @total;");
    $total = mysql_fetch_assoc($rs2);
    print_r($total);
    
    echo "<br>Your Query: " . $rs2 . "<br>";
    echo "Error: (" . mysql_errno() . ") " . mysql_error()."<br>";
    
    $pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', 'diablo');
    $data = $pdo->query("call get_users('joey', @totalUsers);")->fetchAll(PDO::FETCH_ASSOC);
    $total_count = $pdo->query("select @totalUsers;")->fetchAll(PDO::FETCH_ASSOC);
    print_r($data);
    echo '<br />';
    
    echo '-------------------------------------------------------------------------';
    echo '-------------------------------------------------------------------------';
    echo '<br>mysqli';
    
    $mysqli = new mysqli('localhost', 'root', 'diablo', 'test');
    
    print '<h3>MYSQLI: calling sp returning a recordset</h3>';
    
    $rs2 = $mysqli->query("select @total;");
    $total = mysql_fetch_assoc($rs2);
    print_r($total);
    ?>
    Code:
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, object given in /home/basti/public_html/sqlout.php on line 36
    CPU: P4 3.0 GHz | RAM: 1024MB CL2 DDR | Grafik: GeForce 6800 XT dual-head (2x 19") |
    HDD:
    3x 160GB + 1x 250GB als RAID 1 bzw 5 | OS: Ubuntu 8.04

  6. #6
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    Zitat Zitat von basti1985 Beitrag anzeigen
    ich hab des jetzt nochmal mit mysqli versucht ... jedoch mit nem ähnlichen problem
    PHP-Code:
    <?php
    ...
    echo 
    '-------------------------------------------------------------------------';
    echo 
    '-------------------------------------------------------------------------';
    echo 
    '<br>mysqli';

    $mysqli = new mysqli('localhost''root''diablo''test');

    print 
    '<h3>MYSQLI: calling sp returning a recordset</h3>';

    $rs2 $mysqli->query("select @total;");
    [
    B]$total mysql_fetch_assoc($rs2);[/B]
    print_r($total);
    da hat sich ein typo eingeschlicchen.
    Die Funktion heisst equivalent zu mysql
    `mysqli_fetch_assoc'
    bzw. $result -> fetch_assoc()

    PHP-Code:
        while ($row $rs2->fetch_assoc()) {
            
    print_r($row);
        } 
    http://de.php.net/manual/en/mysqli-r...etch-assoc.php

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •