Hallo, LukeWCS,
vielen Dank für Deine Antwort. Ja, wahrscheinlich bin ich da reingefallen und habe PHP 8.2.10 verwendet, weil ich gar nicht drauf gekommen bin, dass das noch nicht freigegeben ist für phpBB 3.3.10.
Ich habe einige Seiten selbst geschrieben und mit dem Forum kombiniert, zu sehen unter:
https://www.jue4you.de
Da sieht man allerdings diesen Fehler nicht. Aber das war auch noch ein 7er PHP. Ich glaube 7.4...
Ich habe eine eigene Klasse abgeleitet von mysqli.php. Wenn diese Funktionen genutzt werden, geschieht der Fehler.
Daher habe ich diese Funktion hier:
Code: Alles auswählen
*
$sql = "SELECT lemi_id, lemi_name, lemi_portion, lemi_stueck";
$sql .= " , lemi_portion_gramm, lemi_stueck_gramm, lemi_user_id";
$sql .= " , lemi_mengenbez, E, F, KH FROM j4u_lemi_lemi WHERE lemi_name != ''";
$sql .= " AND lemi_name LIKE '%" . $search_keyword . "%' ORDER BY lemi_name";
*/
/*
if (!($result = $dblib->sql_query_limit($sql, $per_page, $start))) {
message_die(GENERAL_ERROR, 'Error getting lemis', '', __LINE__, __FILE__, $sql);
}
*/
//while ($row = $dblib->sql_fetchrow($result)) {
...
$lemi_id = $row['lemi_id'];
...
}
ersetzt mit dieser Abfrageversion, weil ich dachte, es liegt möglicherweise an sql_fetchrow($result)
Code: Alles auswählen
// Aufruf:
$searched_lemis = array();
$searched_lemis = $dblib->getGesuchteLebensmittel($search_keyword, $per_page, $start);
//Aufgerufene Funktion in j4u_mysqli.php:
function getGesuchteLebensmittel($search_keyword, $per_page, $start){
global $cached;
$cached = $this->sql_num_queries(false);
$sql = "SELECT lemi_id, lemi_name, lemi_portion, lemi_stueck";
$sql .= " , lemi_portion_gramm, lemi_stueck_gramm, lemi_user_id";
$sql .= " , lemi_mengenbez, E, F, KH FROM j4u_lemi_lemi WHERE lemi_name != ''";
$sql .= " AND lemi_name LIKE '%" . $search_keyword . "%' ORDER BY lemi_name";
if (!($result = $this->sql_query_limit($sql, $per_page, $start))) {
message_die(GENERAL_ERROR, 'Error getting lemis', '', __LINE__, __FILE__, $sql);
}
$searched_lemis = (array) $this->sql_fetchrowset($result); // sql_fetchrowset verwendet!
$this->sql_freeresult($result);
return $searched_lemis;
}
// Weiterverarbeitung des Ergebnisses auf der Seite:
foreach($searched_lemis as $row){
...
$lemi_id = $row['lemi_id'];
...
}
Aber daran liegt es nicht...
In /phpbb/db/driver.php habe ich Folgendes gefunden:
Zeilen 88 - 97:
Code: Alles auswählen
/**
* Constructor
*/
function __construct()
{
$this->num_queries = array(
'cached' => 0,
'normal' => 0,
'total' => 0,
);
und Zeilen 231 - 247:
Code: Alles auswählen
/**
* {@inheritDoc}
*/
function sql_num_queries($cached = false)
{
return ($cached) ? $this->num_queries['cached'] : $this->num_queries['normal'];
}
/**
* {@inheritDoc}
*/
function sql_add_num_queries($cached = false)
{
$this->num_queries['cached'] += ($cached !== false) ? 1 : 0;
$this->num_queries['normal'] += ($cached !== false) ? 0 : 1;
$this->num_queries['total'] += 1;
}
Das sind genau die Zeilen in der driver.php, die den Fehler auslösen!
Dort tauchen die Arrayelemente "cached", "normal" und "total" ja auf. Was muss ich machen, damit dieser Fehler nicht mehr angezeigt wird.
Ist evtl. das PHP-eigene Fehlermanagement extrem streng eingestellt. Warnungen muss man ja auch ausstellen können, aber wo?
Wäre zwar nicht so eine elegante Lösung, würde aber für's Erste helfen...
Gruß, Heiko Jürgens aus Wuppertal