ugrás a tartalomhoz

Másik tárhelyre költözés után adatbázis hibát kapok

Totti 1986 · 2009. Már. 12. (Cs), 19.05
sziasztok

most igyekszem egy másik tárhelyre tenni az oldalam, és ilyen baja van:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...


azt kell tudni, h ahová ezt kiirja, az include-olva van egy másik oldalba.
először még mysql_query bajai is voltak, de azokat megoldottam úgy, h az inlcude-olt fájlba is beleirtam a mysql_connect-et, pedig korábban enélkül is jól működött

már csak ez a hiba van, de sehogy nem birom kijavitani mysql_error azt irja, "no database selected"

a kódrész, ahova a hibát irja, igy néz ki:
<?php


// ****************************************************************
//			SQL ADATBÁZIS MEGNYITÁSA
// ****************************************************************

// kapcsolat megnyitása
$kapcs= mysql_connect("localhost", "jatekbarlang", "totti");
// használandó adatbázis kiválasztása
mysql_select_db("comments", $kapcs);
mysql_query("SET NAMES 'latin2'");


// ****************************************************************
//			   ADATOK BEOLVASÁSA
// ****************************************************************

if ($kod!='')
	{
	$sql= "SELECT * FROM comments WHERE KOD=$kod ORDER BY ID ASC";
	$eredmeny = (mysql_query($sql, $kapcs));

	$i=1;
	while ($comment = mysql_fetch_array($eredmeny) or  die(mysql_error()))
		{
...
előre is köszi
 
1

Hol a hiba

Poetro · 2009. Már. 12. (Cs), 19.16
Jó lenne tudni, melyik sorban keletkezik a hiba. Lehet hogy már maga a kapcsolódás se sikeres, vagy az adatbázis kiválasztása. Sőt, az is lehet hogy a query nem megfelelő, azaz jó lenne azt is tudni, mi volt a query, ahol a hiba megtörténik.
2

ebben a sorban

Totti 1986 · 2009. Már. 12. (Cs), 19.19
while ($comment = mysql_fetch_array($eredmeny) or die(mysql_error()))

a kapcsolódáshoz is irtam először die-t, de az még sikeres volt
3

Korábban?

Poetro · 2009. Már. 12. (Cs), 19.22
Korábbi sorokban létezik a mysql kapcsolat? És mi volt a query?
4

Adatbázist is vitted, vagy a kódot?

Török Gábor · 2009. Már. 12. (Cs), 19.27
Az adatbázist is átvitted ugyanolyan névvel, ugyanolyan hozzáféréssel a másik szolgáltatóhoz?
6

paraszt-debug

abesto · 2009. Már. 12. (Cs), 19.40
print_r($eredmeny) mit mond a hiba előtt? Abból talán el lehet indulni

Edit: 'mysql_error azt irja, "no database selected"' <- ezt az előbb nem láttam.. nyilván print_r így nem írhat ki semmit -.-
5

print, adatbázis, kapcsolat

Totti 1986 · 2009. Már. 12. (Cs), 19.36
print_r($eredmeny) semmit nem adott vissza, ugyanúgy kiirja a mysql_fetch_array hibát
az adatbázis neve ugyanaz, csak más belépőkódokat kaptam, de ezeket átirtam
a mysql kapcsolat a korábbi sorokban is létezik, de az include miatt ebbe a fájlba is ismét beleirtam
7

időközben ahogy átnéztem a

Totti 1986 · 2009. Már. 12. (Cs), 20.02
időközben ahogy átnéztem a többi aloldalt, találtam még egyet, ahol ugyanez a mysql_fetch_array hiba van

sztem legelőször tisztázzuk, mit kell pontosan átirnom az új tárhelyen

az adatbázisok egy az egyben egy exporttal ki lettek mentve, aztán beimportálva az új tárhely phpmyadmin felületén
a mysql_connect-nél átirtam az első paramétert localhostra, a másik kettő a név és jelszó, azokat átirtam

mit kell még átirnom? lehet h itt van a hiba.
8

Verziók?

janoszen · 2009. Már. 12. (Cs), 20.35
Szvsz vizsgald meg a ket tarhely kozotti PHP es MySQL verziókülönbségeket.
9

verziók

Totti 1986 · 2009. Már. 12. (Cs), 21.18
régi:
MySQL client version: 5.0.33
Szerver verzió: 5.0.51a-3-log

új:
MySQL client version: 5.0.32
Szerver verzió: 5.0.32-Debian_7etch8-log

a php verziókat nem tudom
10

Bugos

janoszen · 2009. Már. 13. (P), 01.10
OK, ne is mondd tovább, ha jól emlékszem az 5.0.32-es Debianos MySQL-lel voltak problémák annak idején amikor fejlesztettünk, akkor váltottunk a forrásból forgatott 51a-ra. Nem tudom, összefügg-e a problémáddal. Ami nekünk legjobban fájt, az a túl agresszív cachelés.

Próbálj meg egy környezetet fölhúzni (vagy keress meg magánban, adok egy accot ahol 51a van, töltsd föl oda) és teszteld ki.

szerk: válasz akart lenni de valamiért mégsem az lett. Egyébként az elsőt se értem, miért különbözik a kliens és a szerver verzió?
11

az adatbázis neve

TeeCee · 2009. Már. 13. (P), 06.37
Szia, arra nem válaszoltál, hogy az adatbázis neve is ugyanaz, mint a korábbi tárhelyen volt? Jelenleg 'comments' az adatbázisod neve, az biztos jó? (Adatbázis != tábla, csak mert látom, hogy a comments táblából kérdezel le...)

Amúgy PHP manual (http://hu.php.net/manual/en/function.mysql-select-db.php) alapján átírva:

 
// kapcsolat megnyitása 
$kapcs = mysql_connect("localhost", "jatekbarlang", "totti");
if (!$kapcs) {
    die('Not connected : ' . mysql_error());
}

// használandó adatbázis kiválasztása  
$db_selected = mysql_select_db("comments", $kapcs);
if (!$db_selected) {
    die ('Can\'t use db: ' . mysql_error());
}

No, nem jelzi az adatbázis kiválasztásakor, hogy bibi van?

És a szokásos kérdés: ugye a $kod az előtte a $_REQUEST, $_GET, vagy $_POST-ból van kiszedve megfelelő sql_injection védelmi függvénnyel és nem 'csak így símán' a register_globals = off beállítással?
12

can't use

Totti 1986 · 2009. Már. 13. (P), 11.30
$_GET és $_POST van a változóátadáskor

a probléma úgy tűnik más:

beirtam TeeCee megoldását a megnyitásba és ezt irta ki:

Can't use db: Access denied for user 'jatekbarlang'@'localhost' to database 'comments'

nyugodtan szúrjatok le, nem értek tökéletesen ezekhez a megnyitásokhoz, lehet h orbitális hibát követtem el vhol

szerk.: az adatbázis nevével még lehet h gondok vannak.
a comments az egy tábla a jatekbarlang adatbázisban, legalábbis én igy hittem eddig, vagyis maga a jatekbarlang adatbázis a mysql_connect-tel meg van nyitva, nem? vagy van külön megnyitás az adatbázisra is?
lehet h én rosszul alkalmazom, és igazából a mysql_select_db-vel kéne megnyitni a jatekbarlang adatbázist?

bocsánat ha nagyon hülye vagyok, de amint mondtam, ehhez nem nagyon értek
13

Extra?

janoszen · 2009. Már. 13. (P), 13.03
Figyu, nem véletlenül az extra.hu-ról költöztél le? Mert ott volt olyan fícsör, hogy tök mindegy, mit állítottál be adatbázisnak, rákényszerített a sajátodra.
15

most már nem

Sulik Szabolcs · 2009. Már. 13. (P), 18.31
a héten történt nagy "karbantartás" óta már ott sem jó a sima localhost.
16

Igen.

janoszen · 2009. Már. 13. (P), 22.59
Igen, le lett véve a kényszerítés. A hivatalos leírásban ki van írva, hogy username.extra.sql a host amire kapcsolódnod kell. :)
14

de, igen

Totti 1986 · 2009. Már. 13. (P), 13.26
extráról költöztem le, valószinűleg azért is voltam túl felületes, mert ott ilyen volt a beállitás

mit kell változtatnom?
17

Szolgáltatótól

janoszen · 2009. Már. 13. (P), 23.01
mysql_select_db-ben meg kell adnod azt az adatbázisnevet, amit a szolgáltatótól kaptál, hostként, usernév, jelszó úgyszintén azt amit megadtak a mysql_connect-nél..
18

mysql_connect

Totti 1986 · 2009. Már. 14. (Szo), 01.03
most a mysql_select_db() paramtereihez megadtam a kapott adatbázisnevet, vagyis
$db_selected = mysql_select_db("jatekbarlang", $kapcs);  
ahol a $kapcs a mysql_connect.

most ezt irja:

Resource id #15
19

Jól hangzik

Poetro · 2009. Már. 14. (Szo), 02.44
Ez azt jelenti, hogy sikerült kapcsolódni az adatbázishoz.
20

ááááá

Totti 1986 · 2009. Már. 14. (Szo), 17.30
meglett a hiba!

egyrészt volt egy ugyanolyan nevű tábla, mint adatbázis, az lehet h nem volt hiba, de másrészt a tábla és adatbázis kavarom miatt táblák megnyitása volt a mysql_select_db paramétereiben, ez se tetszett neki, hiszen egyik se létezett, harmadrészt az include előtt lezártam a kapcsolatot és nem nyitottam meg újra, tehát nem találta az adatbázist

végre sikerült, köszi mindenki a segitséget, most már fogok die-t is használni, mert sose jövök rá, hol a hiba
21

Ne tedd

janoszen · 2009. Már. 14. (Szo), 20.32
A die nem jó megoldás, mert nem tudsz kultúrált hibaüzeneteket adni a felhasználónak. Inkább csinálj egy központi adatbázis-kezelést és ott egyszer csináld meg jól a hibakezelést. (if mysql_error... stb)
22

ja jó

Totti 1986 · 2009. Már. 15. (V), 16.25
rendben, meglátom, mi vezet jobb eredményre, köszi :)