Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:27.10.2013 11:36

Ahoj,
není nějaký limit, který určuje maximální počet sloupců v tabulce? Mám následující kód:

include ("connect.php");
$title_articles = $_POST['title_articles'];
$describe_articles = $_POST['describe_articles'];
$author_articles = $_POST['author_articles'];
$url_articles = $_POST['url_articles'];
$ip_articles = $_SERVER['REMOTE_ADDR'];
$view = '1';
$zaznam = mysql_query("INSERT INTO articles SET title_articles='$title_articles', describe_articles='$describe_articles', author_articles='$author_articles', ip_articles='$ip_articles', view='1' ;");

Totiž u téhle tabulky se ty zapis do databáze nevloží, ale u tabulky, která má méně sloupců, tak se mi vloží. Není to nějak ovlivněno počtem sloupců v databázi? Pak mám na zadávání dat do databáze samozřejmě ještě formulář.
Mám úplně ten samej styl kódu a jiný tabulky a funguje to, nevíte, co s tím?
Zajímavý je to, že mi to ani nevyhodí žádnou chybu :-(.
Díky ;-)

 
Odpovědět
27.10.2013 11:36
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na albertpatera
Petr Nymsa:27.10.2013 11:40

Používáš zastaralý ovladač k DB. Mrkni se na PDO, pracuje se s ním mnohem líp. Na SQL a PHP nejsem opravdu guru, ale mám takový dojem že ti tady může vzniknout nádherná SQL injekce.

K samotnému problému ti asi moc neporadím. Ale myslím, že limit na sloupce neexistuje

Nahoru Odpovědět
27.10.2013 11:40
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Petr Nymsa
albertpatera:27.10.2013 11:57

ale tak jaktože mi to v jiných tabulkách jde? mají teda míň těch sloupců, ale jde to. Každopádně díky. Na ten ovladač se kouknu.

Kdyžtak, kdyby tgo nešlo, tak to rozdělim holt do dvou tabulek :D

 
Nahoru Odpovědět
27.10.2013 11:57
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:27.10.2013 11:59

Počet sloupců v tabulce je omezen na 4096, ale běžný limit pro vývojáře je 30. Větší počet obvykle svědčí o chybě v návrhu, je zcela běžné mít v tabulce 2-10 sloupců.

O injekci už byla zmínka, místo

$title_articles = $_POST['title_articles'];

dej alespoň

$title_articles = mysql_real_escape_string($_POST['title_articles']);

apod.

Tipl bych si, že jsi při CREATE DATABASE zapomněl na auto_increment u primárního klíče. Chybu to nevyhodí zřejmě proto, že se ji ani nepokoušíš zachytit a vypsat.

A ještě něco: Čísla se do apostrofů nedávají. Je to zlozvyk z MySQL, které to toleruje.

Nahoru Odpovědět
27.10.2013 11:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:27.10.2013 12:26

díky, qsl injekci opravim....ale A_I jsem zaskrtnout nezapomnel.
4096b sloupců v tabulce opravdiu nemám :D. Zkusim ještě to roozdělit do dvoui tabulek a uvidim :-)
Ale zatim :-)

 
Nahoru Odpovědět
27.10.2013 12:26
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:27.10.2013 12:29

"zaskrtnout"? To je divné. A tu detekci chyb sis tam už udělal?

Nahoru Odpovědět
27.10.2013 12:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:27.10.2013 12:39

Stejně si nemohu zvyknout na ty pleonasmy v názvech sloupců. Proč máš v každém sloupci i název tabulky? Pochopil bych to, kdybys používal NATURAL JOIN nebo alespoň USING, ale jen u klíčových sloupců.

Proč se ta tabulka jmenuje "articles" a ne "article"? Máš snad v jednom řádku víc článků?

Editováno 27.10.2013 12:40
Nahoru Odpovědět
27.10.2013 12:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:27.10.2013 13:14

Ahoj, ještě jsem to neopravil.
to article tam mám to to, že v databázi mám víc tabulek se stejnými sloupci,tak aby to nebylo duplicitní :-)

 
Nahoru Odpovědět
27.10.2013 13:14
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:27.10.2013 13:16

Duplicita názvů sloupců v různých tabulkách ničemu nevadí. Navíc je v SQL dotazu můžeš kdykoli přejmenovat podle potřeby.

Nahoru Odpovědět
27.10.2013 13:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:27.10.2013 20:59

Tak jsem se na to vrhl..a stačilo teda vymazat pár sloupců z s tabulky, které jsem tam měl navíc, takže bez těch sloupců se dá obejít.
Měl jsem tak 7 sloupců, teď jich tam mám 4. Fakt nevim čim to může být, když do překročení maximálního limitu sloupců mám ještě dost hodně co dělat :D. Sice to teď funguje, ale stejně mě vrtá hlavou, čím to asi tam může být :D. Dám to tedy do dvou tabulek. Stejně mě to zajímá, čím to asi tak může být :D

 
Nahoru Odpovědět
27.10.2013 20:59
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:27.10.2013 21:02

Bez chybového výstupu se můžeme jenom dohadovat, co bylo příčinou. Nekompatibilita dat, narušení UNIQUE, ...

Možná bys ten chybový výstup měl konečně udělat.

Editováno 27.10.2013 21:04
Nahoru Odpovědět
27.10.2013 21:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:27.10.2013 21:16

myslíš opravit tu injekci?
Ale tím pádem, kdyby to bylo blbě, tak by mi to nefungovalo i u čtyřech sloupců, nemyslíš?

Samozřejmě to opravím ;-)

 
Nahoru Odpovědět
27.10.2013 21:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:27.10.2013 21:27

Ne. Myslel jsem tím chybový výstup neprovedeného SQL dotazu. Výsledek vůbec netestuješ a divíš se, že se ti SQL dotaz neprovedl.

Nahoru Odpovědět
27.10.2013 21:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:27.10.2013 21:33

Máš pravdu...to taky možná je důsledek toho, proč mi to nejde, takže to taky opravím :-)

 
Nahoru Odpovědět
27.10.2013 21:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.