2013-03-25 14 views
5

Przeszukałem internet dla rozwiązywania problemów z tym „Zadzwoń do niezdefiniowanej funkcji mysql_connect()” błąd, ale żaden z proponowanych zabiegów działa ...Błąd krytyczny: Zadzwoń do niezdefiniowanej funkcji mysql_connect() w

Kiedy próbuję uzyskać dostęp do mysql z php, pojawia się ten błąd. Mam wersję PHP 5.2.17 i MySQL 5.1.68 (mysql działa poza php, próbowałem tworzyć tabele i bazy danych itp.).

I odkomentuj rozszerzenia w pliku php.ini:

extension=php_mysql.dll 
extension=php_mysqli.dll 

i określono ścieżkę do tych rozszerzeń.

Dodałem również PHP i MySQL do mojej zmiennej PATH. Używam Apache 2.2. i zrestartowałem serwer po każdej zmianie, którą wprowadziłem.

To jest mój kod w php do dostępu do bazy danych (ale przypuszczam, że problem nie leży w składni):

<?php  
     $dbhost = 'localhost'; 
     $dbuser = 'root'; 
     $dbpass = 'pasw'; 
     $dbname = 'db'; 

     $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 
     mysql_select_db($dbname); 
?> 

Jestem z pomysłów, jak to naprawić, może u sugerują jakąś inną rozwiązywanie problemów napiwki? Jestem całkiem nowy w jego problematyce ... Chciałbym użyć MySQL, bo to będzie to, czego użyję na prawdziwym serwerze, kiedy będę miał uruchomioną moją stronę. Z góry dziękuję!

EDIT: to jest z apache dziennika:

[Mon Mar 25 13:50:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:\\Web\\thenemis\\dbconnect.php on line 7, referer: http://localhost/thenemis/admin.php 
[Mon Mar 25 13:50:42 2013] [error] [client 127.0.0.1] File does not exist: C:/Web/favicon.ico 

EDIT2: to jest z php info (myślę, że problem może być z pewnych nieokreślonych parametrach w pliku php.ini). Nie przeczytałem nigdzie, że powinienem podać jakieś inne funkcje niż rozszerzenia i ścieżki do nich, ale może się mylę ... co sugerujesz?

mysql 

MySQL Support enabled 
Active Persistent Links 0 
Active Links 0 
Client API version 5.0.51a 

Directive Local Value Master Value 
mysql.allow_persistent On On 
mysql.connect_timeout 60 60 
mysql.default_host no value no value 
mysql.default_password no value no value 
mysql.default_port no value no value 
mysql.default_socket no value no value 
mysql.default_user no value no value 
mysql.max_links Unlimited Unlimited 
mysql.max_persistent Unlimited Unlimited 
mysql.trace_mode Off Off 
+2

użyj phpinfo(), aby upewnić się, że edytujesz poprawnego php.ini – tuffkid

+0

Używasz stosu AMP (lampa/wamp/itp)? –

+0

Zainstalowałem osobno php, mysql i apache (nie używam WAMp ani nic) – Smajl

Odpowiedz

6

Jak już powiedziano, użyj phpinfo() do określenia, czy mysql działa poprawnie. W ogóle nie powinno się użyć MySQL już więcej, ale raczej nowa ulepszona wersja mysql, zwany mysqli http://php.net/manual/de/book.mysqli.php

Można ponadto programowo sprawdzić, czy funkcja istnieje metodą method_exists

+0

Dziwna rzecz po prostu się wydarzyła. Ponownie uruchomiłem komputer i udało mi się go jakoś uruchomić. Po każdej zmianie zrestartowałem apache, ale nie pomogło. W jakiś sposób udało mi się rozwiązać problem ... Dzięki za odpowiedź - phpinfo() naprawdę pomogło ... – Smajl

3

spróbuje użyć tego:

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = 'pasw'; 
$dbname = 'db'; 

<?php 
// Create connection 
$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
?> 

Obsługa MySQL zostanie usunięta z PHP, więc zacznij używać MySQLi lub PDO.

:)

0

ustawić ścieżkę dla PHP w zmiennej systemowej komputera, edytować wartość ścieżki do C:/program files/php; i włączona extension=php_mysqli.dll w php.ini.

Następnie użyłem tej funkcji

mysqli_connect($host,$username,$password)or die(mysql_error()); 

a potem restart systemu. To zadziałało dla mnie; Mam nadzieję, że to zadziała dla ciebie.

2

Sprawdź, czy twoja instalacja PHP została skompilowana z obsługą mysql. Utwórz testowy plik php zawierający <?php phpinfo(); exit(); ?> i uruchom go w przeglądarce. Wyszukaj na stronie słowo kluczowe "MySQL".Jeśli go nie widzisz, musisz ponownie skompilować PHP z obsługą MySQL lub przeinstalować pakiet PHP, który go ma.

Otwórz terminal i uruchom polecenie poniżej.

sudo apt-get install mysql-server 

Jeśli używasz PHP będzie trzeba także zainstalować moduł php mysql

sudo apt-get install php5-mysql 
Powiązane problemy