Ankündigung

Einklappen
Keine Ankündigung bisher.

mysql_result equivalent in mysqli

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql_result equivalent in mysqli

    Hallo

    ich habe folgendes Problem:

    Ich hole aus Tabelle "breweries": ID der Brauerei (BREWERY_CODE), Name der Brauerei (BREWERY) und Land der Brauerei (COUNTRY_CODE). Dieses letzte Feld ist nur ausgefüllt, falls der Name der Brauerei mehr als einmal gibt (es gibt z.B. die Brauerei Feldschlösschen in der Schweiz und in Deutschland. So wird das Feld COUNTRY_CODE mit "CH" oder "D" ausgefüllt sein. Für Brauereien welche nur einmal vorkommen, ist das Feld COUNTRY_CODE leer.
    Für die Brauerei für welche das Feld COUNTRY_CODE nicht leer ist, hole ich mit COUNTRY_CODE, den Name des Landes (COUNTRY_$lang) (jeweils in der entsprechenden Sprache) aus Tabelle "countries".

    Ich bin am Migrieren von mysql auf mysqli.

    Mein alter PHP Code sieht so aus:

    PHP-Code:
    $search_breweries mysql_query("SELECT BREWERY_CODE, BREWERY, COUNTRY_CODE FROM breweries ORDER BY BREWERY ASC");
                    
    $i 0;
                    while (
    $row mysql_fetch_array($search_breweriesMYSQL_NUM)) {
                        
    $breweries[$i][0] = $row[0];
                        
    $key_brewery $row[0];
                        
    $breweries[$i][1] = $row[1];
                        
    $breweries[$i][2] = $row[2];
                        
    $code_country $row[2];
                        
    $count_coasters_brewery mysql_query("SELECT COUNT(*) FROM coasters WHERE BREWERY_CODE LIKE $key_brewery");
                        
    $breweries[$i][3] = mysql_result($count_coasters_brewery,0,0);
                        
    $get_country mysql_query("SELECT COUNTRY_$lang FROM countries WHERE COUNTRY_CODE LIKE '$code_country'");
                        
    $found mysql_fetch_row($get_country);
                        if (
    $found) {
                            
    $breweries[$i][4] = ' ('.mysql_result($get_country,0,0).')';
                        }
                        
    $i $i 1;
                    } 
    diesen habe ich auf mysqli wir folgt umgeschrieben:

    PHP-Code:
    $search_breweries mysqli_query($conn"SELECT BREWERY_CODE, BREWERY, COUNTRY_CODE FROM breweries ORDER BY BREWERY ASC");
                    
    $i 0;
                    while (
    $row mysqli_fetch_array($search_breweriesMYSQLI_NUM)) {
                        
    $breweries[$i][0] = $row[0];
                        
    $key_brewery $row[0];
                        
    $breweries[$i][1] = $row[1];
                        
    $breweries[$i][2] = $row[2];
                        
    $code_country $row[2];
                        
    $count_coasters_brewery mysqli_query($conn"SELECT * FROM coasters WHERE BREWERY_CODE LIKE $key_brewery");
                        
    $breweries[$i][3] = mysqli_num_rows($count_coasters_brewery);
                        
    $get_country mysqli_query($conn"SELECT COUNTRY_$lang FROM countries WHERE COUNTRY_CODE LIKE '$code_country'");
                        
    $found mysqli_fetch_row($get_country);
                        if (
    $found) {
                            
    $breweries[$i][4] = ' ('.mysqli_fetch_row($get_country).')';
                        }
                        
    $i $i 1;
                    } 
    Das Problem ist wenn ich den Name des Landes holen will; also folgende Zeilen:

    PHP-Code:
    $get_country mysqli_query($conn"SELECT COUNTRY_$lang FROM countries WHERE COUNTRY_CODE LIKE '$code_country'");
                        
    $found mysqli_fetch_row($get_country);
                        if (
    $found) {
                            
    $breweries[$i][4] = ' ('.mysqli_fetch_row($get_country).')';
                        } 
    Es kommt nichts zurück.
    Ich weiss das "mysql_result" in mysqli deprecated wird, also ich habe mysqli_fetch_row($get_country) benutzt, leider erfolglos.

    Wie soll ich das umschreiben?

    Vielen Dank im Voraus
    Bettina

  • #2
    Finde zuerst heraus, warum nichts zurückkommt.. Vermutlich ist ein Fehler der Grund.. Frage die DB: https://php-de.github.io/jumpto/sql/

    BTW: Man könnte das was ich so sehe alles wesentich schöner und einfacher lösen. Du solltest dich mal mit JOINs (SQL) befassen.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      So sollte es funktionieren

      PHP-Code:
      $get_country mysqli_query($conn"SELECT COUNTRY_$lang FROM countries WHERE COUNTRY_CODE LIKE '$code_country'");

      if (
      $row mysqli_fetch_row($get_country)) {
           
      $breweries[$i][4] = $row[0];

      Du solltest das Land immer angeben und in der Tabelle speichern oder halt NULL in die Spalte eintragen lassen, als default,, wenn kein Land bekannt ist.

      Man könnte aber als default auch DE nehmen, nur mal als Tipp.

      Das macht die Abfragen hinterher leichter.

      Kommentar


      • #4
        Vielen Dank an euch beide. Jetzt funktioniert.

        Kommentar

        Lädt...
        X