Ich habe High und Low für eine Antwort auf diese Suche, aber ich bin entweder etwas fehlt, oder ich kann einfach nichts in diesem Zusammenhang finden .Übergabe msqli an eine Funktion - kann nicht herausfinden, warum es nicht funktioniert
Hintergrund - versuchen Spaghetti Raserei mit einem kleinen Casual-Projekt zu vermeiden Ich fange an; Ein Teil davon wird hauptsächlich nur Aufrufe einer mysql-Datenbank beinhalten, die den Inhalt der Tabelle anzeigen und so weiter. Einfach ausgedrückt, wie ein CRM, denke ich.
Ich bin vielleicht weit weg von der Basis, aber ich möchte in der Lage sein, meine SQL-Aufrufe als Funktionen zu erstellen, die helfen, wenn/wenn ich zwicken und tunen, sowie einen saubereren Code für das, was ich suche, erstellen machen.
So ohne weiteres, ich habe dies als demomstration:
echo "<table>";
selectall('actions','content',$mysqli);
echo "</table><br><br>";
Was das bedeutet ist, zeigen alle Zeilen aus meiner Tabelle ‚Aktionen. "content" ist nur ein Beispiel für einen Feldnamen, den ich weitergeben möchte und den ich anzeigen möchte, da dies der wichtigste für den Benutzer relevante Feldname in dieser Tabelle ist. Ich übergebe auch $ mysqli hier für meine Funktion db call.
Meine Funktion sieht wie folgt aus:
function selectall($s_table,$s_content,$mysqli){
$query = "SELECT * FROM " . $s_table;
$resource = $mysqli->query($query);
if (!$resource) throw new Exception($db->error);
while ($row = $resource->fetch_assoc()) {
$id = $row['id'];
echo "<tr><td>{$row[$s_content]}</td></tr>";
}
$resource->free();
$mysqli->close();
}
aber .... es nicht funktioniert, und es scheint, einen wackeligen Spruch zu werfen:
Warning: mysqli::query(): Couldn't fetch mysqli
Diese innerhalb der Aktion Punkte die Zeile $ resource = $ mysqli-> query ($ query);
weiß, dass ich die Funktion und alles in Ordnung ist, als ob ich neu formulieren und $ mysqli innerhalb der ersten Zeile der Funktion, wie so erklären ...
$mysqli = new mysqli(username password and so on in here);
... es funktioniert genau richtig.
$ mysqli existiert und arbeitet innerhalb desselben Codes, der auch die Variable innerhalb der Funktion übergibt.
Dies ist eine frühe Phase, also habe ich den Code um den $ mysqli Pass ins Leben gestoßen, vielleicht habe ich den Code etwas unordentlicher gemacht, also sollte ich mir nicht zu viele Gedanken darüber machen.
Wer irgendwelche Ideen, warum es das nicht mag? oh
Als Update habe ich festgestellt, dass, wenn ich $ msqli vorher erklären, es funktioniert auch .. 'Mysqli $ = new mysqli ('Verbindung info'); Echo "
"; ' –