Skocz do zawartości
emm16

Błąd polączenia z MySQL

Rekomendowane odpowiedzi

Przekleiłem do netbeansa kod z książki i mam błąd połączenia z bazą:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\Program Files\xampp\htdocs\4-29\4-29.php:15 Stack trace: #0 {main}thrown in C:\Program Files\xampp\htdocs\4-29\4-29.php on line 15

przez XAMPP MySQL jest uruchomiony PHP My Admin działa, bazę cwphp utworzyłem w PHP MyAdminie a jest ten błąd

kod

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <title>Działająca książka telefoniczna</title>
</head>
<body>
 <div>
   <?php
     // Aplikacja daje nam możliwość odczytu, usuwania, dodawania
     // i poprawy danych w bazie.

     mysql_connect ("localhost", "root", "haselko") or 
       die ("Nie można połączyć się z MySQL");
     mysql_select_db ("cwphp") or 
       die ("Nie można połączyć się bazą cwphp");

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jakiej wersji php używasz? Od wersji php 5.5.0 ta funkcja nie istnieje, została zastąpiona przez mysqli_connect. Generalnie lepiej, żebyś używał wszędzie poleceń zaczynających się od mysqli zamiast mysql. Zbyt wielkich różnic nie ma, więc jeśli posiłkujesz się jakąś książką, to nie powinieneś mieć problemów z działaniem. W razie czego możesz zajrzeć do dokumentacji php :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wersji 7

Zmieniłem i w linii 15 nie ma już błędu, ale jest w 17:

Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in C:\Program Files\xampp\htdocs\4-29\4-29.php on line 17
Nie można połączyć się bazą cwphp

a dopisałem mysqli

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

kup sobie nowa książkę bo tak którą masz jest "deprecated"

inaczej nauczysz się przestarzałych rzeczy

 

https://www.php.net/manual/en/function.mysql-select-db.php

This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

 

mysqli_select_db()

PDO::__construct() (part of dsn)

jak na razie nie jesteś wstanie samodzielnie korzystać z dokumentacji wiec kaplica

 

a tak na marginesie to xhtml (którego używasz) nigdy na poważnie się nie przyjął jego miejcie zajął HTML5

Edytowane przez Namonaki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

  $link = mysqli_connect ("localhost", "root", "") or 
       die ("Nie można połączyć się z MySQL");
     mysqli_select_db ("cwphp", $link) or 
       die ("Nie można połączyć się bazą cwphp");

ale pomoże ktoś, bo zminiełem według dokumentacji PHP i jest błąd "Nie można połączyć się bazą cwphp"

baza cwphp na pewno istnieje

Edytowane przez emm16

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze to mysqli_connect 4 argument funkcji to baza danych. Po drugie definicja funkcji

mysqli_select_db ( mysqli $link , string $dbname ) : bool

Widzisz tu gdzieś kolejność jaką zrobiłeś?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

  $link = mysqli_connect ("localhost", "root", "") or 
       die ("Nie można połączyć się z MySQL");
     mysqli_select_db ("cwphp", $link) or 
       die ("Nie można połączyć się bazą cwphp");

ale pomoże ktoś, bo zminiełem według dokumentacji PHP i jest błąd "Nie można połączyć się bazą cwphp"

baza cwphp na pewno istnieje

najpierw trzeba było by Cie nauczyć korzystania z dokumentacji ...

 

jeśli dalej będziesz używał wiedzy z przed 5/6 jeśli nie 10 lat, zrobisz sobie krzywdę

 

zobacz na dokumentacje funkcji mysqli_connect

https://www.php.net/manual/en/function.mysqli-connect.php

 

a szczególnie na przykład ...

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {
   echo "Error: Unable to connect to MySQL." . PHP_EOL;
   echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
   echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
   exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);
?>

 

nie licz na gotowe rozwiązania ale na "wędkę" która Cie do nich doprowadzi ...

dawanie "ryby" spowoduje że niczego się nie nauczysz

Edytowane przez Namonaki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ok dwa błędy sam znalazłem i poprawiłem według PHP 7, ale na tym się zawiesiłem:

$wynik = mysqli_query($link, "SELECT * FROM ksiazkatelefoniczna;");

     print "<table cellpadding='5' border='1'>";
     print "<tr><td><b>Imię</b></td><td><b>Nazwisko</b></td>";
     print "<td><b>Telefon</b></td><td></td><td></td></tr>\n";

    // $r = mysqli_fetch_object($wynik);
       while ($rekord = mysqli_fetch_object($wynik)) {


       $nr = $rekord['nr'];
       $imie = $rekord['imie'];
       $nazwisko = $rekord['nazwisko'];
       $telefon = $rekord['telefon'];

 

Fatal error: Uncaught Error: Cannot use object of type stdClass as array in C:\Program Files\xampp\htdocs\4-29\4-29.php:71 Stack trace: #0 {main}thrown in C:\Program Files\xampp\htdocs\4-29\4-29.php on line 71

 

linijka 71 czyli:

$nr = $rekord['nr'];

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Poczytaj o programowaniu obiektowym, albo użyj funkcji, która zwraca array, a nie stdClass.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

z dokumentacją ciężko mi idzie. doradźcie jakąś książkę z aktualnymi funkcjami najnowszego PHP i z takim przykładem gotowej aplikacji bazodanowej. na rynku jest masa książek, kupiłem tę i okazała się nieaktualna. jestem pewny, że książka mi ułatwi sprawę, będę miał przykład aplikacji bazodanowej i przerobię sobie. Na początek aplikacja CRUD czyli typowy zapis odczyt aktualizacja usuwanie danych z bazy, a potem jakąś ankietę z pytaniami bym się pokusił stworzyć w PHP. Na pewno jest do tego odpowiednia książka, ale książki mają to do siebie, że jest ich dużo a są słabe najczęśniej, więc proszę o polecenie dobrej książki i aktualnej

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

chce na razie w czystym PHP pisać.

Wyświetlanie sam rozkminiłem na podstawie przykładu z neta.

z wprowadzaniem danych też będzie problem, bo w książce był kod z PHP 5, ale myślę, że też jest do znalezienia w necie, kwestia poprawienia funkcji bo netBeans podświetla na żółto funkcję z PHP 5

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

zamień fetch_object (sama nazwa wskazuje, że funkcja zwróci obiekt) na fetch_assoc (znowu, sama nazwa wskazuje, że funkcja zwróci tablicę asocjacyjną)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...