Ajattelin alkaa kokeilemaan pientä projektiä PHP:llä ja MYSQL-kantaa käyttäen. Homma tökkäsi heti alkuunsa. XP-koneelle on asennettu Apache 2.0.51, PHP 5.0.2 ja MySQL 4.1.17. PHP ja Apache on toimineet ihan ok jo jonkin aikaa, mutta nyt installoin tuon MySQL:n myös koneeseen. Tein sitten yksinkertaisen databasen ja sinne tablen komentoriviltä ja muutenkin kaikki hommat toimii mysql-komentoriviltä hyvin.
Seuraavaksi kokeilin ottaa yhteyttä PHP:lla tietokantaan, ja tein seuraavan testisoftan test.php:
<HTML><HEAD></HEAD><BODY> Testiyhteys: <?php echo ("<P>Alku</P>"); $dbcnx = @mysql_connect("localhost", "root", "salasana"); if (!$dbcnx) { echo( "<P>Unable to connect</P>"); } echo ("<P>Loppu</P>"); ?> </BODY></HTML>
Browseri tuntuu jotenkin aina hyytyvän tuohon mysql_connect riville ja sen jälkeen mitään ei tulostu sivulle. Jos pistän tuon mysql_connect rivin kommenttiin niin sitten myös sen jälkeiset jutut tulostuvat ok. Mikä voisi mättää ? Ini-Asetukset vai joku muu? Kylläkai sivulle pitäisi jotakin tuon tulostua mysql_connect rivin jälkeenkin vaikka yhteyttä ei saataisi tai salasanat olisi väärin jne...
Kommentit otetaan kiitoksella vastaan. Luultavasti tässä on jokin aloittelijan helppo kämmi, mutta mikä? Vai onko noilla em. versioilla todettu ongelmia toimia toistensa kanssa?
-maku
ps. Muistaakseni asensin joskus mysql 4.0.x serverin ja silloin Windowsin palkkiin ilmestyi se liikennevalo ikoni, mutta nyt tämän mysql 4.1 serverin asennuksen ei sellaista tullut. Pitäisikö tulla jokin mysql Admin ikoni?
Olen käyttänyt itse seuraavantapaisia juttuja:
$db = mysql_connect("sejase.host.fi", "user", "salasana"); mysql_select_db("kanta",$db); $result = mysql_query("SELECT kentta1 FROM Taulu",$db); if ($myrow = mysql_fetch_array($result)) { do { $data=$myrow["kentta1"]); echo "$data"; } while ($myrow = mysql_fetch_array($result)); } else { echo "ei tietoja taulussa"; }
Pistää silmään ero että sulla on @-merkki tuon mysql_connect käskyn edessä. Mistä se tulee? Itse en yleensä testaakaan tuota yhteyttä kantaan, vaan kysyn suoran tietoja taulusta ja testaan tuliko mitään.
Minulla oli tuo ongelma, tai ainakin vaikuttaa siltä. Odotas hetki...
EDIT: Tästä voisi olla apua:
https://www.ohjelmointiputka.net/keskustelu/6596-php-n-myslinhallintakomennot-eivät-ota-toimiakseen
petterik kirjoitti:
Pistää silmään ero että sulla on @-merkki tuon mysql_connect käskyn edessä. Mistä se tulee?
@ funktion edessä estää sitä tulostamasta virheilmoituksia, jotka tuotantosivuilla eivät näytä oikein hyvältä. Debugatessa on enemmän, kuin hyvä idea ottaa ne pois.
Onhan sulla PHPssä käännettynä uusin mysqlclient?
Itselläni oli toi Mysqllib 4.0.70(?) ja päivitin MySQLlän uusimpaan eli 4.1.17 jouduin kääntämään myös phpn uudelleen että sain päivitettyä phpn mysqllibin uusimpaan
tämä johtuu salasanan hashauksen muutoksesta
lue lisää: http://dev.mysql.com/doc/mysql/en/
Kokeilin tällä pätkällä että löytääkö mysql funktiota:
<?php
if(function_exists("mysql_connect")) echo "MySQL-funktiot käytössä";
else echo "MySQL-funktiot ei käytössä";
?>
Sanoo että "..ei käytössä" eli ilmeisesti PHP5:sta ei ole konffattu käyttämään näitä mysql-funktioita.
PHP:n manuaalissa sanotaan:
In PHP 5, MySQL is no longer enabled by default, nor is the MySQL library bundled with PHP. Read this FAQ for details on why.
Note: Windows users will need to enable php_mysql.dll inside of php.ini and either copy libmysql.dll into the Windows system directory, or make it available to the PATH.
Eli otin "extension=php_mysql.dll"-rivin pois kommenteista, ja heti alkoi funktiot löytyä. Ihmeellista että PHP5:n mukana tullut php.ini juuri väittää että tätä ei tarvitse ottaa pois kommenteista.
No nyt sitten herjaa että "Client does not support authentication protocol requested by server; consider upgrading MySQL client" eli ollaan varmaankin Nikon mainitsemassa ongelmassa. Miten käytännössä päivitän uuden mysqlclient:n php:ssä?? Käyttis siis win XP.
No kiersin ongelman muuttamalla salasanat mysql serverin puolella vanhaan formaattiin.
makumaku kirjoitti:
Kokeilin tällä pätkällä että löytääkö mysql funktiota:
<?php
if(function_exists("mysql_connect")) echo "MySQL-funktiot käytössä";
else echo "MySQL-funktiot ei käytössä";
?>
Hmmm... Jotenkin tutunnäköinen pätkä :D
Tuo on se nimenomainen pätkä jonka kirjoitit minulle hjälpiksi kun minulla oli tuo sama onkelma.
Aihe on jo aika vanha, joten et voi enää vastata siihen.