Kezdőoldal » Számítástechnika » Programozás » Mit rontok el ebben a mysql...

Mit rontok el ebben a mysql lekérdezésben?

Figyelt kérdés

itt a link:


[link]


Ez csak az inkriminált kódrészlet, a kapcsolódás sikeres volt az adatbázishoz, azt csekkoltam. Hibaüzenet:


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\access.php on line 19

Hibás lekérdezés: No database selected


Ha simán mysql-ben kérdezem le ugyanezt, úgy működik a dolog. (php myadminban)

Tehát ez megy, létezik a tábla és a sor is:

SELECT password FROM account WHERE username=akarmi


Mi az Isten baja lehet? Kerestem százezer féle leírást, de nekem valahogy egyik se jött még be, pedig egy egyszerű where lekérdezésről van szó.


Tudom, hogy béna vagyok, de még csak tegnap kezdtem tanulni a mysql-t. :D



#MySQL #no database selected #mysql lekérdezés hiba #mysql where hiba
2016. okt. 18. 09:24
 1/9 anonim ***** válasza:

A hibaüzenet arra utal, hogy nem választottad ki az adatbázist!


mysql_select_db:

[link]

2016. okt. 18. 09:28
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

Ezt nem teljesen értem, ez nem az adatbázis kiválasztása?


$result = mysql_query("SELECT password FROM account WHERE username=akarmi");

$row = mysql_fetch_array($result);


Ha nem, akkor ez micsoda? Mármint a SELECT szó...


Itt van egy tutorial a select-hez:



[link]



$sql = "SELECT id, firstname, lastname FROM MyGuests";

$result = $conn->query($sql);



Az sql változóba bevezeti az id a firstname és a lastname sort a MyGueasts táblából, és a változóba pedig a $conn változó szerint (ami a bejelentkezési adatokat tartalmazza, felhnév, jelszó db-name, servername) készít egy lekérdezést az sql változóról. Nekem ez megvan. A tábla létezik, a sor létezik, amit WHERE-el akarok lekérdezni, mégis azt írja, hogy nem választottam ki az adatbázist.



Na ennek a megoldása érdekel engem. Miért csinálja ezt, mi a probléma? A példában látható asszociatív tömbös, while ciklusos megoldás működik, de nekem egyetlen egy sor adataira van szükségem, azt meg csak a WHERE-el tudom megoldani.

2016. okt. 18. 10:23
 3/9 anonim ***** válasza:
A from után a táblanevet adod meg, de a sémát még nem választottál. vagy ugy kell, hogy from sémaneve.táblaneve, vagy ahogy az előttem mondták, alapértelmezetté kell tenni egy sémát.
2016. okt. 18. 10:41
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

"A from után a táblanevet adod meg, de a sémát még nem választottál. vagy ugy kell, hogy from sémaneve.táblaneve, vagy ahogy az előttem mondták, alapértelmezetté kell tenni egy sémát."

Mi az a séma? Most hallok róla először.

2016. okt. 18. 10:44
 5/9 anonim ***** válasza:

Van az adatbázisod. Ez sémákból áll. A sémák táblákból. A táblák pedig mezőkből.

Alapértelmezett sémát USE -val lehet választani. [link]

Jó, lehet hogy mysql terminológiában a séma az az adatbázis, de általánosan sémának hívják. Pl postgresql-ben és mssql-ben is schema van.

2016. okt. 18. 10:59
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

Itt egy példa, így


[link]


Ezt is lemásoltam már, ugyanaz a hibaüzenet, csak kétszer.


Még mindig nem értem, hogy miért nem választottam sémát. Csatlakoztam az access nevű adatbázisomhoz, vagy sémámhoz, tökmindegy. Mindemellett az előző példa szerint select-eltem az táblám megfelelő sorait. Ez nem a teljes kód, amit beírtam a codepen-be.


Az összes adat kiírása pedig működik, csak a WHERE nem. Valami más gebasz lesz, nem az, hogy nem csatlakoztam a sémához, de csatlakoztam hozzá.



<?php

Itt határozom meg az adatbázisomhoz való csatlakozást, a dbname-el a sémához, való csatlakozást.

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";


Itt kapcsolódom az előzőleg deklarált változók szerint.

// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection


Itt csekkolom, hogy megy e a kapcsolat, ha ne, akkor hibaüzenetet írok ki.

if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}


itt választom ki az adatbázist, vagy sémát, vagy anyám kínját



Az id az id sor a firstname a firstname sor a lastname... a myguest pedig a tábla



$sql = "SELECT id, firstname, lastname FROM MyGuests";


Itt készítek lekérdezést az $conn-ban meghatározott kapcsolat segítségével.


$result = $conn->query($sql);


Ez működik.


if ($result->num_rows > 0) {

// output data of each row

while($row = $result->fetch_assoc()) {

echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";

}

} else {

echo "0 results";

}

$conn->close();

?>


Ha ugyanezt leírom, hogy:



$sql = "SELECT id, firstname, lastname FROM MyGuests";


de ez where-el van, és nyilván akkor nem kell a while ciklus, akkor nem megy.


Miért? De, csatlakozom a sémához. Vagy akkor hogyan lehetne mégjobban csatlakozni hozzá? Ha nem csatlakoznék a sémához, az adatok while ciklussal való kilistázását se csinálná meg.

2016. okt. 18. 11:19
 7/9 anonim ***** válasza:

Na akkor ahelyett, hogy leírod mi az ami megy, inkább azt írtad volna le ami nem megy.

És igen. kell a while, mert a rekordszet nem feltétlenül egy elemű lesz akkor sem ha where van a query-be.

Vagy ha elég az első rekord, akkor a while helyett egy ifet írj, de a rekordszetből akkor is ki kell olvasnod az adatokat valahogy.

2016. okt. 18. 11:28
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

Elvileg megy így:


<?php

$con=mysqli_connect("localhost","kovoliver","monitor89","access");

// Check connection

if (mysqli_connect_errno())

{

echo "Failed to connect to MySQL: " . mysqli_connect_error();

}


$sql="SELECT password, username FROM account WHERE username='akarmi'";

$result=mysqli_query($con,$sql);



// Associative array



/*$row=mysqli_fetch_assoc($result);

printf ("%s (%s)\n",$row["password"], $row["password"]);*/



if ($result->num_rows > 0) {

// output data of each row

while($row = $result->fetch_assoc()) {

echo "Name: " . $row["username"]. " " . $row["password"]. "<br>";

}

}

//sprintf ("\n",$row["password"]);


// Free result set

mysqli_free_result($result);


mysqli_close($con);

?>



Azt írja ki, amit én akarok, szóval működik. Hála az égnek. Köszi a segítséget, rendesek vagytok! :)

2016. okt. 18. 11:43
 9/9 A kérdező kommentje:
Még szerencse, hogy csak a localhost jelszavamat írtam ki. :D De azért megváltoztatom.
2016. okt. 18. 11:45

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!