2017-05-01 7 views
-2

Kann jemand bitte Hilfe ?? Ich werde gebeten, die Team-, Teamid-, Wimpel- und Worldseries-Spalten aus den Tabellen champs und teampstats zu übernehmen. und drucken Sie die Anzahl der Baseballteams in der Champs-Tabelle aus. Ich habe 2 Dateien wie folgt. Ich erhalte Warnungen sagen Warnung: mysqli_num_rows() erwartet 1 Parameter in/Users/Warnung: mysqli_num_rows() erwartet, dass Parameter 1 mysqli_result ist, null in/Users/

<?php //FIRST FILE: mysqli_connect.php 

DEFINE ('DB_USER', 'happy'); 
DEFINE ('DB_PASSWORD', 'xxxx'); 
DEFINE ('DB_HOST', 'localhost'); 
DEFINE ('DB_NAME', 'baseball_stats'); 

// Make the connection: 
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR 
die ('Could not connect to 
MySQL: ' . mysqli_connect_error()); 

// Set the encoding... 
mysqli_set_charset($dbc, 'utf8'); 
?> 
//// SECOND FILE 
<?php 

require ('a9mysqli_connect.php'); 

$query = "SELECT t.team AS T, t.team_id AS Ti, c.pennants AS P, 
c.worldseries AS W from `teamstats` as t join `champs` as c on 
t.team_id = c.team_id;"; 

$result = @mysqli_query ($dbc, $query); 

// Count the number of returned rows: 
$num = mysqli_num_rows($result); 
//Create an HTML table for displaying the query results: 

if ($num > 0) { // If it ran OK, display the records. 
echo "<p>There are currently $num baseball teams.</p>"; 

echo '<table align="center"> 
<tr> 
<td align="left"><b>Team</b></td> 
<td align="right"><b>Team ID</b></td> 
<td align="right"><b>Pennants </b></td> 
<td align="right"><b>WorldSeries </b></td> 
</tr>' 
; 
//Fetch and print each returned record: 

while ($row = mysqli_fetch_array ($result, MYSQLI_ASSOC)) { 
echo '<tr><td align="left">' . $row['T'] . '</td><td align= "left">' . 
$row['Ti'] . '</td><td align= "left">' . $row['P'] . '</td><td align= 
"left">' . $row['W'] . '</td></tr>'; 
} 
echo '</table>'; 
mysqli_free_result ($result); 
} 
else { //If it didnot run OK. 

// Public message: 
echo '<p class="error"> There are currently no baseball teams in 
the database.</p>'; 
    echo '<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $query . 
    '</p>'; 
} 
mysqli_close($dbc); // Close the database connection. 
?> 
+2

Possible Duplikat [Mysqli \ _fetch \ _array()/Mysqli \ _fetch \ _assoc()/Mysqli \ _fetch \ _row() erwartet Parameter 1 Ressource oder Mysqli \ _result, boolean gegeben werden] (http: //stackoverflow.com/questions/2973202/mysqli-fetch-array-mysqli-fetch-assoc-mysqli-fetch-row-expects-parameter-1) –

+1

warum '@mysqli_query (' und nicht 'mysqli_query (' –

+0

Ihre Query fehlgeschlagen, debuggen – nogad

Antwort

0

mysqli_query für erfolgreiche Abfragen MySQLi_Result, null gegeben werden, es TRUE, FALSE bei einem Fehler zurückkehren, müssen Sie, wenn die Abfrage überprüfen war in einer anderen Datei im Code-Check if ($result)

UPDATE

Dies geschieht, weil Sie $dbc verwenden, die deklariert wird mysqli_connect.php

0 erfolgreich,
<?php //FIRST FILE: mysqli_connect.php 

DEFINE('DB_USER', 'happy'); 
DEFINE('DB_PASSWORD', 'xxxx'); 
DEFINE('DB_HOST', 'localhost'); 
DEFINE('DB_NAME', 'baseball_stats'); 

// Make the connection: 
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR 
die ('Could not connect to 
MySQL: ' . mysqli_connect_error()); 

// Set the encoding... 
mysqli_set_charset($dbc, 'utf8'); 
?> 

Dann in der zweiten php-Datei benötigen Sie die Datei wie require ('a9mysqli_connect.php'); und diese Datei existiert nicht. den Code laufen lassen, wie es ist, habe ich den folgenden Fehler.

enter image description here

Der Fehler klar ist, dass Sie eine Variable unterwegs sind, die nicht zu mysqli_query nicht vorhanden ist, müssen Sie die Datei korrekt verlangen.

<?php 

require('mysqli_connect.php'); 
$query = "SELECT t.team AS T, t.team_id AS Ti, c.pennants AS P, 
c.worldseries AS W from `teamstats` as t join `champs` as c on 
t.team_id = c.team_id;"; 
$result = mysqli_query($dbc, $query); // remove @ 
if ($result) { 
    // Count the number of returned rows: 
    $num = mysqli_num_rows($result); 
    //Create an HTML table for displaying the query results: 

    if ($num > 0) { // If it ran OK, display the records. 
     echo "<p>There are currently $num baseball teams.</p>"; 

     echo '<table align="center"> 
       <tr> 
        <td align="left"><b>Team</b></td> 
        <td align="right"><b>Team ID</b></td> 
        <td align="right"><b>Pennants </b></td> 
        <td align="right"><b>WorldSeries </b></td> 
       </tr>'; 
     //Fetch and print each returned record: 

     while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
      echo '<tr><td align="left">' . $row['T'] . '</td><td align= "left">' . $row['Ti'] . '</td><td align= "left">' . $row['P'] . '</td><td align="left">' . $row['W'] . '</td></tr>'; 
     } 
     echo '</table>'; 
     mysqli_free_result($result); 
    } else { //If it didnot run OK. 

     // Public message: 
     echo '<p class="error"> There are currently no baseball teams in the database.</p>'; 
     echo '<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $query . 
      '</p>'; 
    } 
    mysqli_close($dbc); // Close the database connection. 
} else { 
    echo 'Something wrong happened!!!'; 
} 
+0

Danke für die Hilfe @julekgwa - removed @ und versuchte if-Anweisung, immer noch die gleiche Warnung –

+0

Sie verstehen nicht, was eine Fehlermeldung bedeutet. –

+0

@YourCommonSense Ich verstehe klar, worum es bei dem Fehler geht, diese Anweisung '$ result = @mysqli_query ($ dbc, $ query);' gibt null zurück, weil entweder '$ dbc' nicht definiert ist, wie es in 'mysqli_connect.php' definiert wurde aber OP verwendet 'require ('a9mysqli_connect.php');' in der zweiten Datei. – julekgwa

0
  1. Siehe mysqli_query auf php.net unter "Beschreibung":

Für Nicht-DML-Abfragen (nicht INSERT, UPDATE oder DELETE), ist diese Funktion ähnlich mysqli_real_query dem Aufruf() gefolgt von mysqli_use_result() oder mysqli_store_result().

  1. Siehe mysqli_store_result auf php.net unter "Werte Return":

Auch möglicher Grund für diese Funktion nach erfolgreichen Aufruf zu mysqli_query FALSCH Rückkehr () kann zu groß sein Ergebnismenge (Speicher dafür kann nicht zugeordnet werden). Wenn mysqli_field_count() einen Wert ungleich Null zurückgibt, sollte die Anweisung ein nicht leeres Ergebnis gesetzt haben.

ich auch eine linke schrieb beitreten SQL-Abfrage, vielleicht können Sie es verwenden. Sie haben das Schlüsselwort JOIN verwendet. Ich benutzte LINKEN VERBINDEN. Aber ich habe auch mit JOIN getestet. Es hat funktioniert, also ist deine Frage in Ordnung.

Beschreibung: alle Teams lesen (von Teams Tabelle) und für jeden von ihnen, auch die entsprechenden champs Details (Wimpel und World Series von champs Tabelle).Aber nur die Teams, deren Team-ID auch in Champs ist, existieren (ISNULL(c.team_id) = FALSE).

SELECT 
    t.team AS T, 
    t.team_id AS Ti, 
    c.pennants AS P, 
    c.worldseries AS W 
FROM 
    `teamstats` AS t 
     LEFT JOIN 
    `champs` AS c ON t.team_id = c.team_id 
WHERE 
    ISNULL(c.team_id) = FALSE 
; 
Verwandte Themen