Autor Zpráva
robbie
Profil *
Zdravím a potřeboval bych jen malou pomoc s vysvetlením uvozovek ´ " v příkladu. Moc nechápu, proč tam autor dává oba druhy ´" a už před . tečku. A ne až za ni. Myslím tím toto: ´ " .mysqli_real_escape_string......
Dekuji moc za objasnění..

Příklad:
$sql_prikaz ="ÏNSERT INTO kniha_navstev(datum,jmeno,zapis)"."VALUES(NOW()),´ " .mysqli_real_escape_string($db_spojeni,$_POST[´jmeno´])." ´,´ "
.mysqli_real_escape_string($db_spojeni,$_POST[´prijmeni´])." ´)";
Keeehi
Profil
Uvozovkyj(") jsou v tomto případě pro PHP a obalující s s nimi řetězce.

Apostrof (') je z pohledu PHP momentálně chápán jako jakýkoliv jiný znak v řetězci.
Proč tam je? Nebo protože v SQL musejí být řetězce zase odděleny od ostatních částí.
Martin2
Profil *
Keeehi:
Proč tam je? Nebo protože v SQL musejí být řetězce zase odděleny od ostatních částí.
robbie pravděpodobně myslí zpětnou uvozovku ` (nebo jak se jí vlastně říká). Tu MySQL používá pro názvy objektů. Je nepovinná, ale nezbytná v případech, kdy by docházelo ke kolizi s jinými názvy.
lionel messi
Profil
robbie:
Celý príklad je chybný (či už vinou autora učebnice alebo nesprávneho prepisu).

$sql_prikaz ="INSERT INTO kniha_navstev(datum,jmeno,zapis) VALUES(NOW(), '" .mysqli_real_escape_string($db_spojeni,$_POST["jmeno"])."', '"
.mysqli_real_escape_string($db_spojeni,$_POST["prijmeni"])."')";

Takpovediac všetky spätné apostrofy ` boli na nevhodných miestach, bolo ich nutné nahradiť jednoduchými '. Pokiaľ si nie si presne istý, čo robíš, je najlepšie používať ich iba v nevyhnutných prípadoch (napr. keď máš pomenovanú tabuľku key — key je aj kľúčové slovo MySQL pre kľúč, musíš preto písať `key`).

Na jednom mieste (za volaním funkcie NOW) naviac prevyšovala uzatváracia zátvorka, takýto dotaz zákonite skončí syntaktickou chybou.

Rád by som vedel, aká je to učebnica (nech viem, čo neodporúčať).
Jan Kozák
Profil
robbie:
Příklad je zřejmě chybně zkopírovaný. Na všech místech, kde je použit znak ´ (diakritická čárka), musí být „programátorský“, svislý apostrof '. Znak, který uvádíš, nemá speciální význam ani v PHP, ani v MySQL.

Některé znaky sice podobně vypadají, ale funkci mají jinou:
" – svislé, programátorské uvozovky slouží k označování řetězců, v běžném jazyce se nepoužívají; mají tvar dvou svislých čárek
“ – české koncové a anglické počáteční uvozovky, v programování nemají speciální význam, používají se k vyznačení přímé řeči; mají tvar dvou šestek
” – anglické koncové uvozovky, v PHP bez speciálního významu, mají tvar dvou devítek
″ – označení palců (délka) a sekund (úhel), mají tvar dvou nakloněných čárek
' – svislý, programátorský apostrof slouží k označování řetězců, v běžném jazyce se nepoužívá; má tvar svislé čárky
`– obrácený apostrof, v MySQL nepovinně označuje názvy sloupců, tabulek a databází, má využití i v PHP, v běžném textu nemá význam; má tvar obráceně nakloněné čárky
´– diakritická čárka, v češtině označuje délku samohlásek, v PHP nemá speciální význam; má tvar nakloněné čárky
´ – označení minuty (jednotka úhlu), v PHP bez významu; tvar dlouhé nakloněné čárky (vypadá jako nakloněný programátorský apostrof)
ď – diakritický háček u znaků ď, ť; v PHP bez významu; má tvar devítky, není to tentýž znak jako typografický apostrof, v některých písmech ale vypadá stejně; myslím, že nejde napsat samostatně
‘ – české koncové a anglické počáteční jednoduché uvozovky; v PHP bez významu, v běžném textu se využívají např. u vložené přímé řeči; mají tvar šestky
’ – typografický apostrof a anglické koncové jednoduché uvozovky, v programování nemá speciální význam, používá se například v zápisu hovorové řeči nebo v angličtině v přivlastňovacích tvarech; má tvar devítky
Obecný závěr o těchto čárkách je takový, že ty využitelné v programování jsou v běžném textu chybou. A naopak ty využitelné v běžných textech nemají v programování speciální význam. Aby se to ještě více zkomplikovalo, na klávesnici s českým rozložením nelze napsat české uvozovky ani apostrof.


Zpět ke tvému dotazu. Apostrofy zároveň s uvozovkami se v opraveném příkladu používají proto, že uvozovky (v tomto případě) vymezují v PHP řetězec, který z pohledu MySQL obsahuje jak příkazy, tak řetězce – označené apostrofy. Lépe to uvidíš, když si funkce a proměnné nahradíš konkrétní hodnotou:
$sql_prikaz = "INSERT INTO kniha_navstev (datum,jmeno,zapis) values (NOW(),'robbie','Nějaký text zápisu')";
V PHP se řetězce spojují tečkou. Nahraďme tedy jednotlivé hodnoty samostatnými řetězci:
$sql_prikaz = "INSERT INTO kniha_navstev (datum,jmeno,zapis) values (NOW(),'"."robbie"."','"."Nějaký text zápisu"."')";
Když nyní vložené hodnoty nebudeme vkládat jako řetězce, nýbrž jako výstup funkce, pochopíme, proč jsou uvozovky, apostrofy a tečky tak, jak jsou:
$sql_prikaz = "INSERT INTO kniha_navstev (datum,jmeno,zapis) values (NOW(),'".funkce()."','".funkce()."')";
Robbie
Profil *
Čerpal jsem z knihy : PHP a MySQL bez předchozích znalostí a děkuji moc za cenné rady..

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:

0