Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem - skrypt nie działa
Forum PHP.pl > Forum > PHP > Object-oriented programming
amaze
Witam,

Mam pewnie banalny problem, ale nie mogłem się doszukać na forum. Mam skrypt:

  1. <?
  2. // newssetup.php
  3.  
  4. // Attempt to connect to the MySQL server
  5. $link = @mysql_connect(&#092;"localhost\", \"root\", \"pass\");
  6.  
  7. // If the connection was unsuccessful...
  8. if (!$link) {
  9.  
  10. // Output error information and exit
  11. print &#092;"Error connecting to database server\";
  12. }
  13.  
  14. // Attempt to create database. If successful...
  15. if (@mysql_create_db(&#092;"phpforflash\")) {
  16.  
  17. // Inform user of success
  18. print &#092;"Database created<br>n\";
  19. } else {
  20.  
  21. // Otherwise, tell user there was an error
  22. print &#092;"Couldn't create database<br>n\";
  23. }
  24.  
  25. // Attempt to select database. If successful...
  26. if (@mysql_select_db(&#092;"phpforflash\")) {
  27.  
  28. // Inform user of success
  29. print &#092;"Database selected<br>n\";
  30. } else {
  31.  
  32. // Otherwise, tell user there was an error
  33. print &#092;"Couldn't select database<br>n\";
  34. }
  35.  
  36. // Build table creation query
  37. $query = &#092;"CREATE TABLE news (
  38. newsID INTEGER AUTO_INCREMENT PRIMARY KEY,
  39. title VARCHAR(100),
  40. author VARCHAR(30),
  41. posted INTEGER,
  42. body MEDIUMTEXT)&#092;";
  43.  
  44. // Attempt to create table. If successful...
  45. if (@mysql_query($query)) {
  46.  
  47. // Inform user of success
  48. print &#092;"Table created successfully\";
  49. } else {
  50.  
  51. // Otherwise, tell user there was an error
  52. print &#092;"Error creating table\";
  53. }
  54.  
  55. // Close the connection
  56. mysql_close($link);
  57.  
  58. ?>


mam poprawnie zainstalowane Apache 2.0.54, mySQL 4.1.12a i php 5.04,
kiedy uruchamiam skrypt, nic się nie dzieje - nie otrzymuję żadnej informacji, po porstu biały ekran przeglądarki. Sprawdzałem w phpMyAdmin - baza nie została utworzona itp. Hasło wpisałem takie jak w konfiguracji mysql.

z góry dziękuję za pomoc.

pozdrawiam.
kszychu
Na początek usuń @ sprzed nazw funkcji. @ powoduje niewyświetlanie błędów zwracanych przez funkcje.
amaze
ok, usunąłem i teraz otrzymuję informację:

Fatal error: Call to undefined function mysql_create_db() in C:\WebServer\docs\news\newssetup.php on line 17

Dodam, że MySQL chyba działa poprawnie, ponieważ spod phpMyAdmina mogę swobodnie zarządzać bazą.


dziękuję i pozdrawiam.
kszychu
Cytat(amaze @ 2005-07-12 14:20:10)
Fatal error: Call to undefined function mysql_create_db() in C:\WebServer\docs\news\newssetup.php on line 17

A to oznacza nie co innego tylko to, że php nie ma włączonej obsługi mysqla. Trzeba ją włączyć w konfiguracji w php.ini.
amaze
Nie mogę sobie poradzić... przejrzałem php.ini, ale nie wiem, który fragment poprawić. (jest ;extension=php_mysql.dll), oraz poprawna ścieżka do extensions. (jeśli o to chodzi). Sorr za zawracanie głowy.

//edit
nie zauważyłem, że przed extension=php_msql.dll, jest znak ";", tak zresztą jak przed resztą ext. Usunąłem go i teraz wykrywa błąd już w 7 linijce - czyli podczas łączenia się z bazą. Usunięcie wszytskich znaków ; nic nie daje, jedynie przy restarcie apache'a wykrywa mi błędy - nie może odnaleźć niektórych modułów.
kamiox
Po co usunąłeś ";" przed resztą rozszerzeń skoro z nich nie korzystasz ? To nie ma nic wspólnego z błędem !

Błąd się pojawia ponieważ masz podane niewłaściwe parametry w funkcji:

  1. <?php
  2.  
  3. mysql_connect(&#092;"localhost\", \"root\", \"pass\");
  4.  
  5. ?>


musisz podać włąsciwą nazwe użytkownika i hasło, może spróbuj wpisać bez hasła:

  1. <?php
  2.  
  3. mysql_connect(&#092;"localhost\", \"root\", \"\"); 
  4.  
  5. ?>


bo tak się domyślnie instaluje mysql.
amaze
mnie się wyadaje, że kszychu ma rację tylko nie potrafię włączyć obsługi mySQL. To ten znacznik ";" w końcu powinien być, czy nie?
Jak się okazuje, nie ma nic do rzecy fakt, jakie ustawię hasło i usera - nawet, gdy pola pozostawiam puste, nadal otrzymuję identyczną informację.
Chyba fakt, że wywołuje: "Call to undefined function", znaczy, że nie ma komunikacji między bazą a php.

//edit
PS: Najnowsze MySQL 4.1.12a się tak nie instaluje - trzeba od razu podać hasło do roota.

pozdrawiam.
kamiox
Cytat(amaze @ 2005-07-12 15:42:10)
PS: Najnowsze MySQL 4.1.12a się tak nie instaluje - trzeba od razu podać hasło do roota.

Skoro masz mysql powyżej 4.1 to powinieneś korzystać chyba z mysqli czyli zamiast:

  1. <?php
  2.  
  3. $link = @mysql_connect(&#092;"localhost\", \"root\", \"pass\");
  4.  
  5. ?>


dać:

  1. <?php
  2.  
  3. $link = @mysqli_connect(&#092;"localhost\", \"root\", \"pass\");
  4.  
  5. ?>


i zamiast np.

  1. <?php
  2.  
  3. if (@mysql_create_db(&#092;"phpforflash\")) {
  4.  
  5. ?>


dać:

  1. <?php
  2.  
  3. if (@mysqli_query( $link, 'CREATE DATABASE phpforflash' )) {
  4.  
  5. ?>


Zobacz sobie do manuala - > http://pl.php.net/mysqli


Co do średniaka to chyba logiczne, że jeśli chcesz włączyć obsługe jakiejś biblioteki to usuwasz średnik.
kurt
Cytat(kszychu @ 2005-07-12 13:25:56)
Cytat(amaze @ 2005-07-12 14:20:10)
Fatal error: Call to undefined function mysql_create_db() in C:\WebServer\docs\news\newssetup.php on line 17

A to oznacza nie co innego tylko to, że php nie ma włączonej obsługi mysqla. Trzeba ją włączyć w konfiguracji w php.ini.

Mam podobny problem : Fatal error: Call to undefined function mysql_connect() in c:\Inetpub\wwwroot\document1.phtml on line 17

podczas próby wywołania funkcji : mysql_connect("127.0.0.1","","");

jaki parametr odpowiada w php.ini za współpracę z mysql ?

Już wiem - po prostu należy po wprowazeniu wszelkich zmian w php.ini zrestartować IIS (net stop iisadmin) (net start w3svc) pod konsolą. Niby oczywiste , ale ... smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.