Chyba při výběru hodnoty z DB přes název sloupce dosazený v proměnné

kuon
Člen | 17
+
0
-

Ahoj,
používám níže uvedený kód pro naplnění hodnot z databáze do formuláře – např. editace uživatele. Na jedné doméně mi to funguje a na druhé doméně mi naprosto stejný kód hlásí chybu „Array to string conversion“. Problém je ve výběru konkrétní hodnoty z DB přes název sloupce dosazený v proměnné: $ROW->$COL[‚name‘] Proč mi to ale jednou funguje a podruhé ne? Jak to mám správně nastavit, abych nemusel manuálně vypisovat všechny názvy sloupců? Díky za pomoc.

$DB_sloupce = $this->database->getConnection()->GetSupplementalDriver()->getColumns('uzivatele');
$DB_vypis_hodnot = array();

foreach ($DB_sloupce as $COL) {
	foreach ($DB_uzivatele as $ROW) {
		$DB_vypis_hodnot[$COL['name']] = $ROW->$COL['name'];
	}
}

$this->FORM_DATA = $DB_vypis_hodnot;
Phalanx
Člen | 310
+
0
-

Ahoj,

Laděnka ti musí vyhodit, která proměnná to udělala (tipuju nějaké datum). Mrkni do logs.

PS: Tvůj kód mi přijde hodně špatný, přepsal bych to nějak následovně:

<?php
$user = $this->database->table('uzivatele')->where('id=?', $id)->fetch();
if ($user) {
	$defaults = $user->toArray();
	// tady si ještě ošetři nedefinované hodnoty např. v select, radio...
	// nebo naformátuj datum $defaults['date'] = ...;
	$form->setDefaults($defaults);
}
?>

Editoval Phalanx (8. 4. 2019 11:07)

kuon
Člen | 17
+
0
-

Díky moc. Tohle funguje. Opustit jsem tedy rovnou můj starý kód a předělal to na tu jednodušší verzi. Jen nechápu, že stejný kód se stejnou DB a stejnými hodnotami mi jedno běží a jednou ne. Ale teď už je to jedno. Ještě jednou díky za rychlou odpověď.

Phalanx
Člen | 310
+
0
-

Neliší se ti data? To je divné, stejně bych mrknul do logu, co přesně ti to způsobilo.

Editoval Phalanx (8. 4. 2019 11:21)

kuon
Člen | 17
+
0
-

Právě že se mi neliší data ani scripty. Šlo jen o přesun celého webu na novou doménu a změny v designu. Pracuji se stejnou DB i stejným konkrétním záznamem. V logu nic nemám, protože jsem na chybu narazil při ladění a nešlo to vůbec do produkčního režimu.

Šaman
Člen | 2667
+
0
-

A neliši se verze PHP? Konkrétně 5.x vs. 7.x?
V té sedmičkové verzi je možné specifikovat typ vstupních proměnných funkcí, pětková typy neřešila.

kuon
Člen | 17
+
0
-

Šamane, máš pravdu. Můžeš mi poradit, jak by takový kód mohl fungovat pod PHP 7.x? Konkrétně mi jde o to, že občas potřebuji dosadit proměnou za název výpisu z DB – tedy něco jako:

$ROW->$name_col

místo

$ROW->name_col
galab
Backer | 74
+
0
-
$ROW->{$name_col}
kuon
Člen | 17
+
0
-

galab napsal(a):

$ROW->{$name_col}

Díky, vyzkouším.