Portál AbcLinuxu, 10. května 2025 06:09
$array = array('aaa' => array('a' => 'a-aaa', 'b' => 'b-aaa'), 'bbb' => array('a' => 'a-bbb', 'b' => 'b-bbb'), 'ccc' => array('a' => 'a-ccc', 'b' => 'b-ccc'), 'ddd' => array('a' => 'a-ddd', 'b' => 'b-ddd'), 'eee' => array('a' => 'a-ccc', 'b' => 'b-eee'));Zkouším získat klíč podle zadaného údaje, Zkoušel jsem to
echo array_search('a-bbb', $array);i takto
echo array_search('a-bbb', array($array));ale vůbec nic mi nejde. Poradí někdo? Díky
$stmt = $db->prepare('SELECT key FROM table WHERE co = ?;'); $stmt->execute(array('a-aaa')); $status = $stmt->fetch(); echo $status['key'];zkoušel jsem i tohle
$stmt = $db->prepare('SELECT key FROM table WHERE co = ?;'); $stmt->execute(array('a-aaa')); $status = $stmt->fetchColumn(); echo $status['key'];ale taky nic. Když dám var_dump($status); tak to vrací jen "bool(false)". Když dám místo key hvězdičku, tak to funguje... Vydí tam někdo nějakou chybu? Díky
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key FROM define WHERE co = a-aaa' at line 1
ale žádnou chybu nevidím..
Toto je přesně případ, proč raději vše uvozovkuji, těmi uvozovkami, které dané entitě v daném DBE přísluší. minimálně je třeba použít lepší názvy, tedy key doplnit o to co je to za key, třeba userLoginKey
nebo book_category_key
.
Uvozovkování předchází i problému, kde se vytvoří nové rezervované slovo, ale zas to pro někoho znepřehledňuje dotazy.
Zadej 'SELECT `key` FROM `table` WHERE `co` = ?;'
(pro MySQL) a už to pojede
(Pro PostgreSQL by to bylo něco jako: 'SELECT "key" FROM "table" WHERE "co" = ?;'
,
pro M$SQL myslím něco jako 'SELECT [key] FROM [table] WHERE [co] = ?;'
).
foreach a in $array { echo array_search('a-bbb', $a); }(pseudokód) Pro víc polí to bude pomalé, pak bych asi uvažoval o nějaké vhodnější struktuře (strom, hashtable).
$source = array('aaa' => array('a' => 'a-aaa', 'b' => 'b-aaa'), 'bbb' => array('a' => 'a-bbb', 'b' => 'b-bbb'), 'ccc' => array('a' => 'a-ccc', 'b' => 'b-ccc'), 'ddd' => array('a' => 'a-ddd', 'b' => 'b-ddd'), 'eee' => array('a' => 'a-eee', 'b' => 'b-eee')); $output=''; // index pole pro nalezenou hodnotu $find = 'a-eee'; // hledana hodnota array_walk(array_keys($source),create_function('$value, $key,$param', 'in_array($param[1], $param[0][$value])? $param[2] = $value: "";'),array($source,$find,&$output)); echo $output;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.