Warnung: mysql_fetch_array(): Das angegebene Argument ist kein gültiges MySQL-Ergebnis

Lesezeit: 4 Minuten

Ich erhalte den Fehler, wenn ich versuche, dies auszuführen:

<?php
require_once('includes/DbConnector.php');
$connector = new DbConnector();
$result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100');
// Get an array containing the results.
// Loop for each item in that array
while ($row = $connector->fetchArray($result)){

echo $row['title'].'</h3>';
echo $row['content'];
}
?>

Ich habe eine verlinkte Datei: DbConnector.php:

<?php
////////////////////////////////////////////////////////////////////////////////////////
// Class: DbConnector
// Purpose: Connect to a database, MySQL version
///////////////////////////////////////////////////////////////////////////////////////
require_once 'SystemComponent.php';

class DbConnector extends SystemComponent {

var $theQuery;
var $link;

//*** Function: DbConnector, Purpose: Connect to the database ***
function DbConnector(){

    // Load settings from parent class
    $settings = SystemComponent::getSettings();

    // Get the main settings from the array we just loaded
    $host = $settings['dbhost'];
    $db = $settings['dbname'];
    $user = $settings['dbusername'];
    $pass = $settings['dbpassword'];

    //the settings
    $host="localhost";
    $db = 'xxx';
    $user="xxx";
    $pass="xxx";

    // Connect to the database
    $this->link = mysql_connect($host, $user, $pass);
    mysql_select_db($db);
    register_shutdown_function(array(&$this, 'close'));

}

//*** Function: query, Purpose: Execute a database query ***
function query($query) {
    $this->theQuery = $query;
    return mysql_query($query, $this->link);
}

//*** Function: getQuery, Purpose: Returns the last database query, for debugging ***
function getQuery() {
    return $this->theQuery;
}

//*** Function: getNumRows, Purpose: Return row count, MySQL version ***
function getNumRows($result) {
    return mysql_num_rows($result);
}

//*** Function: fetchArray, Purpose: Get array of query results ***
function fetchArray($result) {
    return mysql_fetch_array($result);
}

//*** Function: close, Purpose: Close the connection ***
function close() {
    mysql_close($this->link);
}


}
?>

Weiß jemand, was das Problem ist?

  • Sie sollten mysql-Funktionen nicht verwenden, solange sie veraltet sind

    – Kas

    8. August 2014 um 15:22 Uhr


  • Bitte nicht verwenden mysql_* Funktionen in neuem Code. Sie werden nicht mehr gepflegt und sind offiziell veraltet. Siehe die rote Kiste? Lernen vorbereitete Erklärungen stattdessen und verwenden PDO oder MySQLiDieser Beitrag hilft Ihnen bei der Entscheidung, welche. Wenn Sie sich für PDO entscheiden, hier ist eine gute Anleitung.

    – esqew

    8. August 2014 um 15:24 Uhr

  • Kanonische Referenz → mysql_fetch_array() erwartet, dass Parameter 1 eine Ressource (oder mysqli_result) ist, boolesch gegeben

    – mario

    16. April 2015 um 0:24 Uhr

  • Ein mögliches Duplikat von mysqli_fetch_array()/mysqli_fetch_assoc()/mysqli_fetch_row() erwartet, dass Parameter 1 resource oder mysqli_result ist, boolesch gegeben

    – Mogsdad

    7. Juni 2016 um 20:50 Uhr

Warnung mysql fetch array Das angegebene Argument ist kein gultiges MySQL Ergebnis
Zombat

Ihre Abfrage muss ein Problem aufweisen, das dazu führt, dass $result eine ungültige Ressource ist.

Versuchen Sie, nach zu suchen MySQL-Fehler() nach der Zeile, in der Sie Ihre Abfrage ausführen.

Bearbeiten:

Tatsächlich würde ich Ihre DBConnector-Klassenfunktion query() so ändern, dass bei einer fehlerhaften Abfrage ein identifizierbarer Fehler ausgegeben wird:

function query($query) {
    $this->theQuery = $query;
    $queryId = mysql_query($query,$this->link);
    if (! $queryId) {
        throw new Exception(mysql_error().".  Query was:\n\n".$query."\n\nError number: ".mysql_errno();
    }
    return $queryId;
}

Ich finde das in einem Beitrag, der mir mein Problem gelöst hat. Slds.

Ja, die Antwort ist einfach, die verwendete Abfrage ist kein wahres Ergebnis, da es sich sozusagen um eine Abfrage innerhalb eines getrow handelt. Hier ist die Lösung: Finde alle Zeilen, die so aussehen:

mysql_fetch_array(mysql_query("...snip...";-) );

Und fügen Sie einfach ein “@” davor ein, damit es so aussieht:

@mysql_fetch_array(mysql_query("...snip...";-) );

Machen Sie dann dasselbe für die folgenden Zeilen. Code:

mysql_num_rows(mysql_query("...snip...";-) );

Führen Sie die gleichen Schritte wie oben durch, indem Sie das „@“ hinzufügen, sodass es so aussieht:

@mysql_num_rows(mysql_query("...snip...";-) );

All dies sagt “Während xxx innerhalb von yyy ausgeführt wird”. Andernfalls ist es aufgrund eines fehlenden Ergebniswerts tot. Es ist eine PHP-Sache..

Funktioniert wie ein Zauber, ich habe 5 Minuten gebraucht, um den gesamten Code auseinander zu reißen und alles in Modernbill zu schlagen, teilt die gleiche Datenbank und funktioniert perfekt für mich.

Warnung mysql fetch array Das angegebene Argument ist kein gultiges MySQL Ergebnis
bhavin

Dieser Fehler bedeutet, dass Ihre Abfrage fehlgeschlagen ist. mysql_query() gibt false zurück, wenn ein Fehler aufgetreten ist, an den Sie dann false übergeben mysql_fetch_array() was die Fehlermeldung auslöst.

Ihre Abfrage könnte aufgrund einer fehlenden/falschen Tabelle oder eines fehlenden Felds fehlschlagen. Um den detaillierten Fehler anzuzeigen, drucken Sie das Ergebnis von aus MySQL-Fehler().

Die mysql_* Bibliothek ist veraltet. Es wird empfohlen, auf zu aktualisieren MySQLi oder PDO.

// Load settings from parent class
$settings = SystemComponent::getSettings();

// Get the main settings from the array we just loaded
$host = $settings['dbhost'];
$db = $settings['dbname'];
$user = $settings['dbusername'];
$pass = $settings['dbpassword'];

//the settings
$host="localhost";
$db = 'xxx';
$user="xxx";
$pass="xxx";

Wollten Sie die Verbindungsvariablen neu zuweisen? ODER waren das ein paar Zeilen Stub-Code, die Sie vergessen haben, herauszunehmen? Oder nur ein Beispiel, um zu zeigen, was $settings enthält?

Bitte geben Sie den Fehler von mysql_error() an. Ohne das kann ich nur raten … versuchen Sie, Ihre Feldnamen zu maskieren?

$result = $connector->query('SELECT `title`,`content` FROM `staff_vacancies` ORDER BY `ordering` LIMIT 0,100');

1647058446 521 Warnung mysql fetch array Das angegebene Argument ist kein gultiges MySQL Ergebnis
SuReSch

Ihre Abfrage muss ein Problem aufweisen, das dazu führt, dass $result eine ungültige Ressource ist.

Benutze das

<?php
require_once('includes/DbConnector.php');
$connector = new DbConnector();
$result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100');
// Get an array containing the results.
// Loop for each item in that array

if($result){
while ($row = $connector->fetchArray($result)){

echo $row['title'].'</h3>';
echo $row['content'];
}
}
?>

992650cookie-checkWarnung: mysql_fetch_array(): Das angegebene Argument ist kein gültiges MySQL-Ergebnis

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy