Autor Zpráva
ondrej256
Profil *
Dobrý den,

Mám výjimku: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicata du champ 'value1' pour la clef 'title' search
(mám to v nějakém divném jazyce, za to se omlouvám, ale nic to na věci nemění)

Potřeboval bych z té hlášky/Exceptiony dostat ty hodnoty tzn: value1, title

title = název atributu
value1 = hodnota atributu

Nechci používat žádné ořezávání stringu, protože jak vidíte, může to být v jiných jazycích a tím pádem by ořezávání nemuselo fungovat.

Je možné hodnoty získat nějak jinak? Na vstupu hodnoty nijak získat nemůžu

díky za rady
juriad
Profil
$err = "1062 Duplicata du champ 'value1' pour la clef 'title' search";
preg_match_all('/\'(.*?)\'/', $err, $matches);
var_dump($matches[1]);
Vytáhnout vše co je mezi apostrofy. Ještě by bylo dobré zkontrolovat všechny jazyky, zda nemohou používat apostrof i ve větné struktuře té hlášky.
Kajman
Profil
Také se hodí zkontrolovat parsování pro hlášku, když se vkládala duplicitní hodnota obsahující apostrof. A také hlášku pro porušení unikátního vícesloupcového klíče.
juriad
Profil
Tak mě napadá, že přece víš, co do databáze vkládáš a stačí pak jen danou hodnotu zkusit najít v hlášce pomocí mb_strpos($err, "'$hodnota'") a názvy sloupců znáš, takže ty pořešíš podobně.
Keeehi
Profil
ondrej256:
Já jenom doufám, že to k ničemu nepoužíváš! Chybové hlášky jsou pouze pro programátora. Rozhodně by na nich neměl stavět logiku aplikace. Co když se tvůrci databáze rozhodnou, že takhle jak ta hláška je se jim nelíbí a rozhodnou se ji nějak upravit?
ondrej256
Profil *
Chtěl jsem na tom postavit logiku, ale rozhodně ne takto. Když jsem psal, že nechci používat žádné ořezávání stringů, tak jsem tím myslel i podobné věci jako se tu zmínily.

Doufal jsem, že se hodnota dá nějak získat

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: