Új hozzászólás Aktív témák
-
VladimirR
nagyúr
egyreszt Bővebben: link
masreszt
if (isset($_GET['id'])) {
//ide jon a lekerdezes es az eremeny kiiratasa
} else {
print ''aggyal meg parametert'';
} -
VladimirR
nagyúr
na, igy probald meg, ez nalam mukodik:
<?php
$database=''test'';
$sqlhost=''localhost'';
$sqluser=''root'';
$sqlpass='''';
$ujtabla = ''CREATE TABLE `probatabla` (''
. '' `id` INT(10) NOT NULL, ''
. '' `nev` VARCHAR(8) NOT NULL, ''
. '' `jelszo` VARCHAR(10) NOT NULL, ''
. '' `email` VARCHAR(250) NOT NULL, ''
. '' `datum` VARCHAR(20) NOT NULL, ''
. '' `ip` VARCHAR(250) NOT NULL, ''
. '' PRIMARY KEY (`id`)''
. '' )'';
$nev = ''Anna'';
$jelszo = ''bingo777'';
$email = ''annana@franconmail.hu'';
$datum = ''2004.11.27. - 17:20'';
$ip = ''555.666.777.888'';
$parancs = ''INSERT INTO `probatabla` ''
. ''(`id`, `nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$id', '$nev', '$jelszo', '$email', '$datum', '$ip')'';
$kapcsolat = mysql_connect($sqlhost, $sqluser, $sqlpass) or die(''Nem lehet csatlakozni: ''.mysql_error().''<br>'');
print ''Sikerült a kapcsolat letrehozasa<br>'';
mysql_select_db($database) or die(''Nem lehet megnyitni az adatbázist: ''.mysql_error().''<br>'');
print ''Sikerült kiválasztani a ''.$database.'' adatbázist<br>'';
mysql_query($ujtabla, $kapcsolat) or die(''Hiba a tabla letrehozasanal: ''.mysql_error().''<br>'');
print ''Sikerült letrehozni az uj tablat az adatbazisban<br>'';
mysql_query($parancs, $kapcsolat) or die(''Hiba a lekerdezes kozben: ''.mysql_error().''<br>'');
print ''Sikerült beilleszteni az adatokat az adatbazisba<br>'';
$sorlekerdez = mysql_query(''SELECT * FROM `probatabla`'') or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
print ''Sikerült lekerdezni az adatokat az adatbazisbol<br>'';
$sorok= mysql_num_rows($sorlekerdez) or die(''Itt a bibi, valami nem jo'');
print ''Sorok szama: ''.$sorok;
mysql_close($kapcsolat);
?>
[Szerkesztve] -
VladimirR
nagyúr
dupla aposztrofokat mindenutt lecserelted idezojelre?
itt a kod maga => Bővebben: link es igy tudod letolteni => Bővebben: link
jah es az nem not_null, hanem NOT NULL
[Szerkesztve] -
VladimirR
nagyúr
a dontott idezojel arra jo, hogy ha ''foglalt szot'' (pl mysql fuggvenynevek, parancsnevek, akarmik) szeretnel adni tabla-, vagy mezonevnek, akkor ilyenek koze kell irni
elhagyhato, ha nem ilyen foglalt kifejezest hasznalsz, de en igy szoktam meg, mert phpmyadminbol nezehgettem ki a php-s sql kodokat, s az mindenhova tesz
a hibat azert kapod, mert mar van 0 erteku key1 (sorban az elso, vagyis az id)
ezt ketfelekeppen kerulheted ki:
-lekerdezed, hogy mi az aktualis legnagyobb id, es attol egyel nagyobbat adsz meg
-autoincrementet hasznalsz, es a lekerdezesbol kiveszed az id-t, tehat ez lesz a beszurasod:
$parancs = ''INSERT INTO `probatabla` ''
. ''(`nev`, `jelszo`, `email`, `datum`, `ip`) ''
. ''VALUES ''
. ''('$nev', '$jelszo', '$email', '$datum', '$ip')'';
ekkor az id automatikusan fopg novekedni
beallitamni meg igy tudod:
ALTER TABLE `probatabla` CHANGE `id` `id` INT(10) NOT NULL AUTO_INCREMENT
az file-ok meg azert ne voltak elerhetoek, mert nem ment a gepem, igy nem volt elerheto a webszerverem, de most mar ujbol megy (ritka az olyan, hogy kikapcsolom a gepet, de ki kellett szednem a hdd-t ) -
VladimirR
nagyúr
igy probald:
$lekerdez = ''SELECT * FROM `probatabla` WHERE nev like '$nev' '''
$sorlekerdez = mysql_query($lekerdez) or die(''Hiba a lekerdezeskor: ''.mysql_error().''<br>'');
(a $nev mellet levo aposztrofot csereltem ki)
tipp: szedj le egy phpmyadmin-t (Bővebben: link) es azon keresztul tudod managel-ni az adatbazisod - valamint megmutatja a lekerdezesek sql es php kodjat is, igy tanulni is eleg jol lehet belole -
VladimirR
nagyúr
ez azert van, mert a mysql_query egy resqurce ertekkel ter vissza, amit eloszor fetch-elni kell, pl a mysql_fetch_assoc, vagy mysql_fetch_array fuggvennyel
majd utana ki tudod iratni
abbol a resource_id-bol nem sok mindent tudsz meg, inkabb valami ilyesmi kellene (mint Szalma is irta)
$ilyennincs=''ilyennincs'';
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$ilyennincs' '');
if (mysql_num_rows($lekeres2) = 0) {
while ($row = $result->fetch_assoc()) {
print $row[''nev'';
}
else
print ''0'';
[Szerkesztve] -
VladimirR
nagyúr
az, hogy a create table nem php, hanem sql utasitas, s mint ilyet, csak a megfelelelo fuggvenyekkel tudod meghivni
<?php
$query = ''CREATE TABLE tablaneve ( ''
. ''azonosito INT NOT NULL AUTO_INCREMENT, ''
. ''PRIMARY KEY (azonosito), ''
. ''nev VARCHAR (8), ''
. ''jelszo VARCHAR (10), ''
. ''email VARCHAR (250), ''
. ''datum VARCHAR (20), ''
. ''ip VARCHAR (250) ''.
. ''); '';
mysql_query($query); // <-- ez fogja majd tenylegesen vegrehalytani a lekerdezest
?>
[Szerkesztve] -
VladimirR
nagyúr
-
VladimirR
nagyúr
<?php
$db = mysql_connect(''localhost'', ''root'', ''jelszo'') OR die (''Connection Error to Server''); // itt kapcsolodsz az adatbazis szerverhez, a localhost, az az, hogy a sajat gepeden van az adatbazis, a root, az a felhasznalo, a jelszo meg a root felhasznalohoz tartozo jelszo -- ezeket az ertekeket csereld le a Nalad hasznalatosokhoz
mysql_select_db(''adatbazis'') OR die(''Connection Error to Database''); // itt valasztod ki, hogy melyik adatbazist kivanod hasznalni
$query = ''CREATE TABLE tablaneve ( ''
. ''azonosito INT NOT NULL AUTO_INCREMENT, ''
. ''PRIMARY KEY (azonosito), ''
. ''nev VARCHAR (8), ''
. ''jelszo VARCHAR (10), ''
. ''email VARCHAR (250), ''
. ''datum VARCHAR (20), ''
. ''ip VARCHAR (250) ''
. ''); ''; // ez a lekerdezes maga, amit vegre kivansz hajtani
mysql_query($query, $db); // ez pedig a lekerdezes vegrehalytasa, a fenti kapcsolaton
?> -
VladimirR
nagyúr
olyat lehet csinalni, hogy van egy datetime mezo, de lekerdezeskor csak a honapot es napot mutassa (pl.: 05-25), vagy ezt utolag kell megoldanom, a kapott adatok vagdosgatasaval?
koszonom -
VladimirR
nagyúr
eloszor is:
a ket kodreszlet kozott az alapveto kulonbseg az, hogy mig az elsonel akkor lepsz be a feltetel igaza agaba, ha nem nulla a sorok szama, mig masodik esetben akkor, ha nulla
igy aztan egy 0 sorbol allo tomb sorain akarsz vegigmenni (ugye ez nem fog megtortenni, ezert nem lepsz be a ciklusba
egyebkent jobb lenni igy, mint azt mar faster is emlitette:
$lekeres2 = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' '');
if (mysql_num_rows($lekeres2) != 0) // ha nem nulla a sorok szama, vagyis van ilyen felhasznalo
{
print ''Van már ilyen név, válassz másikat!'';
}
else
.........
$lekeres = mysql_query(''SELECT * FROM probatabla
WHERE nev= '$nev' and jelszo= '$jelszo' '');
if (mysql_num_rows($lekeres) == 0) // ha nulla a sorok szama, vagyis nincs ilyen felhasznalo
{
print ''Név/jelszó nem stimmel!'';
}
else
..... -
-
VladimirR
nagyúr
válasz deakgyuri #168 üzenetére
$keres = ''SELECT * FROM apro'';
$eredmeny = mysql_query( $keres, $kapcsolat );
$sorok_szama = mysql_num_rows ( $eredmeny );
for ($szamlalo = 0; $szamlalo < $sorok_szama; $szamlalo++) {
$egy_sor = mysql_fetch_assoc( $eredmeny );
print $szamlalo.''. sor: ''
.'' ''.$egy_sor['apro_id']
.'' ''.$egy_sor['apro_felado']
.'' ''.$egy_sor['apro_eler']
.'' ''.$egy_sor['apro_mettol']
.'' ''.$egy_sor['apro_meddig']
.'' ''.$egy_sor['aprohirdetes']
.'' ''.$egy_sor['link'].''\r\n'';
}
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mas:
#1005 - Can't create table '.\ph_search\users.frm' (errno: 140)
ez mi? csak akkor mondja, ha a users tabla nick mezojet (ami varchar) binary-ra teszem
neztem phpmyadminbol is es konzolbol is, a hiba mindket esetben fennal
mysql 4.0.20
jogokkal nincs baj, root-kent neztem, minden mas mukodik rendesen
elore is ksozonom
[Szerkesztve] -
VladimirR
nagyúr
hogyan tudnam a mysql 4.1.14 karalkterkeszletet latin2-re allitani?
a my.ini-ben van egy olyan, hogy ''default-character-set=latin2'', viszont a phpmyadmin szerint a ''MySQL karakterkészlet: UTF-8 Unicode (utf8)'', es az őű betuk helyett is mindenutt csak kerdojeleket latok
korabbi mysql-ben latin2 volt alapbol, es valahogy nincs kedvem a parszazezer soros db-t atirogatni
segitsegeteket elore is koszonom
VladimirR -
VladimirR
nagyúr
nem a db es tabla karakterkeszletevel van a gond, legalabbis azt hiszem (a mysql kapcsolat egyeztetes, a db, a tabla es a szoveges mezok egybevetes erteke mind latin2_hungarian_ci, hanem az mysql szerver karakterkeszletevel, amit viszont egyszeruen nem tudok allitani (ujonnan felvitt adatok is hibasan jelennek meg)
a manual, amit linkeltel (meg mar neztem korabban is ) azt irja, hogy ilyen-olyan kapcsolokkal inditsam a mysql-t, viszont az nem sikerul, mert ekkor a szolgaltatas nem indul el (The MYSQL service could not be started. A system error has occurred. System error 1067 has occurred. The process terminated unexpectedly.), vagy pedig forditsam ujra az egeszet (ehhez viszont sem kedvem, sem forditom, sem hozzaertesem nincs) -
VladimirR
nagyúr
na, ezek phpmyadminbol vannak:
(valtozo, session ertek, globalis ertek)
character set client utf8 latin2
character set connection latin2 latin2
character set database latin2 latin2
character set results utf8 latin2
character set server latin2 latin2
character set system utf8 utf8
character sets dir D:\Programs\Server\mysql\share\charsets/ D:\Programs\Server\mysql\share\charsets/
collation connection latin2_hungarian_ci latin2_general_ci
collation database latin2_general_ci latin2_general_ci
collation server latin2_general_ci latin2_general_ci
illetve mint irtam, a phpmyadmin fooldalan:
MySQL karakterkészlet: UTF-8 Unicode (utf8)
ezeket meg a mysqld sugoja mondja:
character-set-server latin1
character-sets-dir D:\Programs\Server\mysql\share\charsets/
chroot (No default value)
collation-server latin1_swedish_ci
default-character-set latin1
default-collation latin1_swedish_ci
default-time-zone (No default value)
illetve mysqladmin:
character-sets-dir (No default value)
default-character-set (No default value) -
VladimirR
nagyúr
hi
adott egy forum, ket (tobb, de most csak ketto szamit) tablaval, a topic-ok es a hozzaszolasok tablajaval
elobbiben vannak a topic adatai (id, cim, nyitas ideje, nyito, kategoria, etc...), utobbiban a hozzaszolasok (id, hozzaszolo id-je, topic id-je, etc)
mivel nem sajat forumrol van szo, igy a torlest eleg erdekesen kellene megoldanom ,megpedig ugy, hogy ha eltunik egy topic, vagyis eltunik egy sor a topic-ok tablajabol, akkor torlom a benne levo hozzaszolasokat (vagyis a megfelelo topicid-vel rendelkezo sorokat a hozzaszolasok tablajabol
hogyan lehet ezt a leginkabb fajdalommentesen megoldani?
az sajnos nem megoldhato, hogy mielott torlom a topic-ok tablajabol a sort, torlom a hozza tartozo post-okat, mindenfele okok miatt (foleg, mert fel evre visszamenoleg kellene megoldanom a torolt topic-ok post-jainak torleset es megeshet, hogy a jovoben is lesz hasonlo)
ami eddig eszembe jutott, az az, hogy a topicid-k bol halmazt kepzek, majd azt mondom, hogy ''delete from posts where topicid not in (<halmaz>)''
ez mennyire elfogadhato megoldas, van-e ettol szebb, jobb, gyorsabb
segitsegeteket elore is koszonom -
VladimirR
nagyúr
hi
valaki meg tudna magyarazni nekem, hogy:
-mi a kulonbseg a varchar es a text adattipuxok kozott, leszamitva a meretuket, illetve azt, hogy utobbinal csak ugy keszitheto index, ha megadom az ''index prefix length''-t?
-mi az az index prefix length?
-mi a kulonbseg szoveges (varchar, text) mezo eseteben a sima index es a fulltext index kozott?
-hogy jobb index-et kesziteni? melyiknek mik az elonyei, hatranyai?
-a) alter table tablanev add index ( mezo1, mezo2 );
-b) alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
manualt olvasgattam, de ezekre nem kaptam belole szamomra ertheto valaszt -
VladimirR
nagyúr
válasz VladimirR #311 üzenetére
meg egy kerdes:
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
1:
select id from tabla1 where name = 'nev';
ezt bepakolom egy valtozoba
select count( id ) from tabla2 where tid = valtozo;
2:
select count( id ) from tabla1 inner join tabla2 on tabla1.id = tabla2.tid where tabla1.id = 'nev';
azert kerdezgetek ennyi hulyeseget, mert nem egy kimondott izomgep-re keszulok attenni az adatbazist, ahol szamitani fog, hogy igazan jol legyenek belove maga az adattarolas is es a lekerdezesek is
segitsegeteket elore is koszonom -
VladimirR
nagyúr
egy up a kesonkeloknek
-
VladimirR
nagyúr
válasz Jester01 #314 üzenetére
kosz a valaszt (RedAnt, neked is)
varchar -nak a rekordban van foglalva hely (a maximális hossznak)
amennyire tudom, a varcharnak pont ez a lenyege a char-ral szemben, hogy nincs szamara a maximalis hossz lefoglalva, csak a hossz + 1 byte (ujabban (mysql5-tol talan), ha a varchar hossza nagyobb, mint 255 karakter, akkor lehet hossz + 2 byte is)
alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
most latom csak, a ph motor kiszurte a lekerdezest, az ott eredetileg nem egy ''pocs'' volt, hanem egy masik alter (amennyire eszrevettem, ha a kovetkezo karaktersor van, akkor az atalakul .|. karakterekke: ; sqlparancs
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
miert biztosabb es mit ertesz ezalatt?
(egyebkent most latom csak, hogy ezt meg en irtam el: a masodiknak ez a vege: tabla1.name = 'nev' -
VladimirR
nagyúr
probalok adatbazisba helyezni egy csunya string-et az adatbazishoz
a string azert csunya, mert a sha1( "idejonvalami", true ); fuggveny eredmenye, vagyis mindenfele karakterek vannak benne
a gond az, hogy nem akar sikerulni, nem azt teszi be, amit kellene
a problema abban leledzik, hogy az adatbazis utf8-as es en ennek megfeleloen az adatbazis-kapcsolat letrehozasa utan beallitom a character set es a names valtozokat utf8-ra
mysql_query( "SET CHARACTER SET utf8;" );
mysql_query( "SET NAMES utf8;" );
ha viszont ezt nem tesz meg, akkor a fentebb kifogasolt problema megszunik, a karaktersor megfeleloen kerul az adatbazisba
ekkor eppen csak az ekezetes karaktereim nem tudnak madukkal mit kezdeni
van erre valami megoldas azon kivul, hogy 20 helyett 40 byte-on tarolom az sha1 hash-eket? -
VladimirR
nagyúr
válasz VladimirR #362 üzenetére
ehh, naszoval tenyleg koran van meg
szoval az a gond, hogy ha egy lekerdezesben akarok adatbazisba illeszteni egy usernevet es egy jelszohoz tartozo binaris sha1 hash-t, akkor az egyik nem fog latszani, attol fuggoen, hogy a kapcsolategyeztetes be van-e allitva utf8-ra -
VladimirR
nagyúr
Hi!
van egy tablam, par szazezer sorral
meg van egy script, ami ezt frissitgeti:
- uj adatot beszurni
- meglevonel par mezot frissiteni
- egyszerre ugy 5-30 ezer sor
jelenleg ugy oldom meg, hogy select-tel megnezem, szerepel-e mar az adott ertek, s ha igen, frissitem a sorat, egyebkent beszurom
van erre valami jobb modszer? (replace nem jatszik)Udv: VladimirR
-
VladimirR
nagyúr
hogyan tudnam egy mysql 5 szerver memoriaigenyet a minimalisra csokkenteni?
nem sokmindenre van hasznalva, csak egy ftp es egy mailserver (mindketto csekely hasznalattal bir) account-jainak tarolasara szolgal az adatbazisnem tudom, szamit-t, de egy debian rendszer van a mysql alatt
kerdes tehat az, hogy mely beallitasokat erdemes piszkalni, s esetleg melyiket hogyan
elore is koszonom
[ Szerkesztve ]
-
VladimirR
nagyúr
válasz fordfairlane #462 üzenetére
ket okbol is maradnek a mysql mellett:
- nem tudom, mennyire lenne egyszeru megetetni a hasznalni kivant alkalmazasokkal ezt
- nincs belole debian csomag (sot, egyeb letoltheto formatumot sem talaltam most hirtelen) -
VladimirR
nagyúr
van ket tablam, az egyikben forumtemak fejlecei (cim, inditotta, elso, utolso post, hozzaszolasszam, lekerdezesszam, etc), a masikban a hozzaszolasok
mivel ez nem sajat forum, hanem egy "mirror", ezert figyelni kell, megvan-e minden hozzaszolas egy-egy topic-bolen arra gondoltam, megszamolom a post-okat, topic-onkent osszehasonlitom a topics tabla tartalmaval, s ha nem egyezik a szamolt hozzaszolasszam a topics tabla hosszaszolasszam oszlopaval, akkor frissitek
hogyan lehetne ezt egyszeruen, gyorsan megcsinalni?
az alabbi tobb, mint 20 percig tart:SELECT posts.topic_id, COUNT( posts.num ) AS num, postnum FROM posts INNER JOIN topics ON posts.topic_id = topics.topic_uid GROUP BY topic_id HAVING num != postnum;
(posts.topic_id a topic azonositoja, topics tabla elsodleges kulcsa, posts.num a hozzaszolas sorszama, postnum pedig a topics tablaban tarolt topic-onkenti hozzaszolasszam)
ha jol sejtem, az a gond, hogy elobb csinalja meg a join-t, s csak utana a group by-t
ra lehet venni valahogyan a mysql-t (egy lekerdezesben), hogy elobb menjen a group by (az magaban megvan eleg gyorsan), s csak utana, a megmaradt sorokra eroltesse a join-t? -
VladimirR
nagyúr
az egyik szerverhez nem ferek hozza, csak a web-en lathato forumhoz, az adatokat egy crawler gyujti, igy a megszamlalas nem igazan lehetseges
jelenleg ugy nez ki a dolog, hogy egy crawler vegigszalad a forumtemak felsorolasan (ez eleg gyorsan megvan) es frissiti a topics tablat, beleetve a hozzaszolasszamokat is
ezt kellene valahogy (az en fenti peldamnal gyorsabban) osszevetni a meglevo hozzaszolasok szamaval[ Szerkesztve ]
-
VladimirR
nagyúr
mysql> explain extended SELECT posts.topic_id, COUNT( posts.num ) AS num, postnum FROM posts INNER JOIN topics ON posts.topic_id = topics.topic_uid GROUP BY topic_id HAVING num != postnum;
+----+-------------+--------+------+------------------+---------+---------+----------------------------+--------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+------------------+---------+---------+----------------------------+--------+---------------------------------+
| 1 | SIMPLE | topics | ALL | PRIMARY | NULL | NULL | NULL | 104148 | Using temporary; Using filesort |
| 1 | SIMPLE | posts | ref | PRIMARY,topic_id | PRIMARY | 3 | ph_search.topics.topic_uid | 19 | Using index |
+----+-------------+--------+------+------------------+---------+---------+----------------------------+--------+---------------------------------+
2 rows in set, 1 warning (0.02 sec)
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest