Keskustelut - PHP - Kirjautumin MySQL-palvelimelle ei toimi?


TapaniS 22:51 12.1.10 
Ihan alkumetreillä tuli tällainen, osaisikohan joku neuvoa?

Asennettu:
php-5.3.1-Win32-VC6-x86.zip
apache_2.0.63-win32-x86-no_ssl.msi
mysql-5.1.42-win32.msi

Tietokantaan syötetty command line clientin kautta uusi käyttäjä täysin oikeuksin sekä test-database ja siellä on dataa.

Toimii:

PHP
<?php
echo ("Haloo Maailma!\n");
?>
 


Ei toimi:

PHP
<?php
mysql_pconnect("localhost", "User1","Passw1");
mysql_select_db("test");
$result = mysql_query("SELECT * FROM taulu");
while ($rivi = mysql_fetch_row ($result)) {
   echo $rivi['luku'];
}
?>
 


Virheilmoitus:
WWW-sivusto ei voi näyttää sivua (HTTP 500)
Todennäköisimmät syyt:
WWW-sivustoa huolletaan.
WWW-sivustossa on ohjelmointivirhe.

Ei toimi:

PHP
<?php

try {
    $yhteys = new PDO("mysql:host=localhost; dbname=test", "User1", "Passw1");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}

echo 'Connected successfully';
?>
 


Virheilmoitus: VIRHE: could not find driver
eis 00:59 13.1.10 
Kannattaiskohan laittaa virheilmoitukset näkyviin sekä ehkä myös tarkistaa paluuarvot..
tsuriga 01:24 13.1.10 
Ihan näin niinko mielenkiinnosta: näinkö siellä sovelluskehityskurssilla opetetaan?
TapaniS 08:03 13.1.10 
Virheilmoitukset on näkyvissä ja sovelluskehityskurssi alkaa vasta kuun loppupuolella, jos siihen on tullut riittävästi ilmoittautuneita ...

eis 12:47 13.1.10 
Eivät nuo mitä laitoit ole PHP:n virheilmoituksia. Jos PHP:n virheilmoitukset ovat näkyvissä, voisit pistää ne tämän threadin yhteyteen.
tino 18:06 13.1.10 
PDO:n osalta: http://fi.php.net/manual/en/pdo.installation.php

Eli tarkista php.ini:stä, että siellä on tällaiset rivit (eivätkä ole kommentoituna):
extension=php_pdo.dll
extension=php_pdo_mysql.dll

Ja toki myös, että nuo ko. tiedostot löytyvät ja ovat oikeissa paikoissaan.

mysql_pconnectin voinet unohtaa, sitä ei kannata käyttää jos ei homma ole täysin hanskassa ja tuo ole tietoinen valinta. mysql_connect sen sijaan on käypä. Muuta on paha sanoa, kannattaa tutkia virhelogeja läpi niin pääsee paremmin selville mistä on kyse.


Lisäksi vielä koodistasi:

PHP
while ($rivi = mysql_fetch_row ($result)) {
   echo $rivi['luku'];
}

Tuo ei koskaan tulosta mitään tuollaisena. Ks. mysql_fetch_row vs. mysql_fetch_assoc
TapaniS 22:17 13.1.10 
Monet kiitokset hyvistä neuvoista, nyt alkaa pikkuhiljaa löytymään vikaa ...

Warning: main(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for '2.0/no DST' instead in C:\Program Files\Apache Group\Apache2\htdocs\mysql-simple3.php on line 3 Fatal error: Call to undefined function mysql_connect() in C:\Program Files\Apache Group\Apache2\htdocs\mysql-simple3.php on line 3


Sama teksti tuli myös mysql_pconnect :n kanssa. Täytyy katsoa oikea syntaksi jostakin ...

Lisäksi pitää perehtyä tuohon PDO:hon vielä tarkemmin. php_pdo.dll ainakin puuttuu koneeltani.

Lisäsin php.ini tiedostoon virhelogin ja extension=php_pdo_mysql.dll. Tämä ainakin löytyy! Tuoltapa muuten huomasinkin heti, että php_pdo_mysql.dll ei löydy, polku on annettu väärin! Jostakin syystä noita etsitään hakemistosta C:\php5\ , kun pitäisi olla C:\php\ext. No täytyypä tutkia tätäkin ...

Menee hiukan aikaa näiden kanssa, laitan infoa, kun asia etenee. Muutoin näyttää selvältä, mutta osaako joku vielä tietää tuota "timezone" -herjaa? Miten tuohon pitää suhtautua?


editoitu: 22:23 13.1.10
tsuriga 22:22 13.1.10 
-php.inistä löytyy myös asetus extension_dir
-myös php_mysql pitää vääntää päälle erikseen vitosversiossa
-kuten virheilmossa neuvotaankin, aikavyöhyke pitää asettaa itte. php.inissä vaikkapa date.timezone = "Europe/Helsinki" tai sitten koodissa date_default_timezone_set("Europe/Helsinki"); tai sitten htaccessiin php_valueta
editoitu: 18:15 16.1.10
TapaniS 22:33 14.1.10 
tsurigan antamat kolme kohtaa rustasin kuntoon ja nyt toimii!

En ole vielä tuohon PDO:hon koskenut. Mikähän tämä PDO oikein on?

Kiitokset vielä hyvistä neuvoista!

----
Edit: Jostakin lueskelin, että tuo PDO-moduli olisi uusimmissa php-paketeissa sisäänrakennettuna, eikä sitä tarvitse enää erikseen aktivoida tai asennella.
tino 13:38 20.1.10 
Tuolta saat lisäinfoa: http://fi.php.net/manual/en/book.pdo.php

The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.