Autor Zpráva
quatzael
Profil
Mám dotaz do databáze, ale nevím jak z něho dostat výsledek..
Zřejmě tady u zjišťování délky řetězce nelze použít mysqli_fetch_array, protože to očividně nějak nefunguje..

$sql="SELECT LEN(*) FROM seznam WHERE id = '" . $i . "'"; 

$result = mysqli_query($db_connect, $sql);
$row = mysqli_fetch_array($result);
ShiraNai7
Profil
quatzael:
1) LEN() v MySQL neexistuje
2) LENGTH(*) je nesmysl
quatzael
Profil
ShiraNai7:
podle všeho existuje: www.w3schools.com/sql/sql_func_len.asp
jestli teda neslovíčkaříš s SQL a MySQL...

Jak se to tedy dá udělat? Potřebuju zjistit délku řetězce v konkrétním řádku a sloupci..
DJ Miky
Profil
A co se snažíš docílit tou hvězdičkou? Pokud chceš délku jednoho sloupce v MySQL, pak je to LENGTH(sloupec).
quatzael
Profil
DJ Miky:
potřebuju délku dvou sloupců, ale právě nevím jak vzít ten výsledek hledání jinak než prostřednictvím pole, tedy pomocí mysqli_fetch_array..

Jak je teda můžu dostat výsledek přímo ze sloupce??
Joker
Profil
quatzael:
potřebuju délku dvou sloupců
To jako u každého z nich délku, nebo délku obou dohromady?

nevím jak vzít ten výsledek hledání jinak než prostřednictvím pole, tedy pomocí mysqli_fetch_array
Však tak se to udělá.
Při načítání do klasického pole se k tomu dá dostat normálně přes index jako k jakémukoliv jinému sloupci výběru, při načítání do asociativního pole by to asi chtělo nějak pojmenovat, SELECT LENGTH(sloupec) AS delka …
ShiraNai7
Profil
quatzael:
jestli teda neslovíčkaříš s SQL a MySQL...

Samozřejmě že myslím MySQL, když se ptáš na MySQL. To nemá se slovíčkařením co do činění.
quatzael
Profil
Joker:
To jako u každého z nich délku, nebo délku obou dohromady?
délku dohromady dvou řeťezců (ze dvou sloupců)..

Asi by se hodilo například tohle:
SELECT LENGTH(sloupec1, sloupec2) AS delka1, delka2
ale to nefunguje..

Při načítání do klasického pole se k tomu dá dostat normálně přes index jako k jakémukoliv jinému sloupci výběru, při načítání do asociativního pole by to asi chtělo nějak pojmenovat, SELECT LENGTH(sloupec) AS delka …

Pak se to tedy bere z proměnné $row['delka']?? Já jsem myslel, že když chci jen jednu hodnotu tak je nesmysl používat pole..

ShiraNai7:
Samozřejmě že myslím MySQL, když se ptáš na MySQL. To nemá se slovíčkařením co do činění.
Takže teda funkce LEN() existuje jen v SQL ale ne v MySQL?? Já jsem měl za to, že MySQL používá jako jazyk přímo SQL jako každá jiná databáze..
Tori
Profil
quatzael:
Pokud pracujete s MySQL, je logické používat i manuál k MySQL. V některých věcech (třeba i u joinů) se liší od standardu SQL.
A jestli používáte utf-8, berte v úvahu rozdíl mezi LENGTH a CHAR_LENGTH.
ShiraNai7
Profil
quatzael:
Já jsem měl za to, že MySQL používá jako jazyk přímo SQL jako každá jiná databáze..

Z něj vychází, ale to vůbec neznamená že tam je vše 1:1. Každá "databáze" má své odlišnosti.
Joker
Profil
quatzael:
délku dohromady dvou řeťezců (ze dvou sloupců)..
…a vzápětí ukázka má zase dvě hodnoty.
Ale pokud to tedy má být délka obou sloupců dohromady, jde počítat délka jejich spojení:
SELECT LENGTH(CONCAT(prvni, druhy)) …

Pak se to tedy bere z proměnné $row['delka']?
Ano.

Já jsem myslel, že když chci jen jednu hodnotu tak je nesmysl používat pole..
Výsledkem mysqli_fetch_(array/assoc/row) je pole.
Kdyby to vracelo různé datové typy podle počtu vybíraných hodnot v SQL dotazu (přičemž SQL dotaz nemusí být součástí PHP skriptu a může se v čase měnit), bylo by dost složité s tím pracovat.
Tori
Profil
quatzael:
Já jsem myslel, že když chci jen jednu hodnotu tak je nesmysl používat pole..
Přímo to jde jen v PDO nebo mysql. V mysqli snad bind_result, ale musíte zavolat i $result->fetch().
DJ Miky
Profil
Joker:
SELECT LENGTH(CONCAT(prvni, druhy)) …

Možná bude o fous rychlejší pouze sečíst délky obou řetězců:
SELECT (LENGTH(prvni) + LENGTH(druhy)) AS delka …
quatzael
Profil
DJ Miky:
Jo, díky. Já už jsem to udělal přes ten CONCAT.. Tohle teď nebylo pro řešení, který by sloužilo nějaký aplikaci na mým webu, ale prostě jsem potřeboval z jedný databáze zjistit maximální délku řetezce, který se skládá ze dvou řetězců, abych věděl jak široký udělat inputy, do kterých se to bude automaticky vkládat..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: