Autor Zpráva
Milan1236000
Profil
Zdravím,
jsem začátečník. Mohl by mi někdo, prosím, vysvětlit rozdíl mezi těmito třemi příkazy?
$pripojeni = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$pripojeni) die('Could not connect: ' . mysql_error());

$pripojeni = new mysqli('localhost', 'mysql_user', 'mysql_password', 'my_db');
if ($pripojeni->connect_errno) die('Connect Error: ' . $mysqli->connect_errno);

$pripojeni = new mysqli("localhost", "uzivatel", "heslo", "databaze");
if ($pripojeni->connect_errno > 0) die("Není databáze!");
Díky.

edit: Jaký je ještě rozdíl mezi:
$pripojeni->close();

mysql_close($id_spojeni);
?
smiesek
Profil
ty příkazy se liší ve způsobu programování: procedurální a objektové.

Doporučovala bych se na Vašem místě rozhodnout, jakým způsobem budete chtít programovat, abyste si zbytečně nemotal hlavu dvěma metodami nebo jak to správně nazval :)
kzk_cz
Profil *
Doporučoval bych se rozhodnout pro objektové programování a použil nějakou připravenou DB vrstvu. :) Třeba něco krásného jako tohle (http://doc.nette.org/cs/2.3/database).
Alphard
Profil
To co píší kolegové výše může být trochu zavádějící, i s knihovnou mysqli jde pracovat procedurálně. Nejzásadnější rozdíl je, že mysql a mysqli jsou odlišné knihovny (a nejsou jediné). Vzhledem k tomu, že mysql je deprecated, rozhodně ji nelze doporučit.
Milan1236000
Profil
Díky všem za odpovědi a za vysvětlení. Rozhodně si tedy vybírám to objektové.
Milan1236000
Profil
Ještě mám jeden problém s připojením se k databázi.

$pripojeni = new mysqli("IP_adresa_serveru:port", "moje_jmeno", "moje_heslo", "moje_databaze");
if ($pripojeni->connect_errno > 0) die("Při připojení došlo k chybě: " . $pripojeni->connect_error . ", číslo chyby: " . $pripojeni->connect_errno);
$pripojeni->close();

Zobrazuje se mi chyba:
Unknown MySQL server host 'IP_adresa:port' (20), 2005
Zjistil jsem, že IP_adresa:port by se mělo psát u mysql_connect.
U new mysqli by to mělo být ve tvaru:
$pripojeni = new mysqli("IP_adresa_serveru", "moje_jmeno", "moje_heslo", "moje_databaze", port);
Ale ani tato druhá varianta nefunguje, zobrazuje se pro změnu chyba:
Can't connect to MySQL server on 'IP_adresa_serveru' (101), 2003
Zkoušel jsem i ten port dát také do uvozovek, ale chybové hlášení je pořád stejné.

Jak se tam připojit?

A technické dotazy.
Je tohle:
$pripojeni = new mysqli("IP_adresa_serveru:port", "moje_jmeno", "moje_heslo", "moje_databaze");
if ($pripojeni->connect_errno > 0) die("Při připojení došlo k chybě: " . $pripojeni->connect_error . ", číslo chyby: " . $pripojeni->connect_errno);
to samé jako tohle:
$pripojeni = new mysqli("IP_adresa_serveru:port", "moje_jmeno", "moje_heslo", "moje_databaze") or die("Při připojení došlo k chybě: " . $pripojeni->connect_error . ", číslo chyby: " . $pripojeni->connect_errno);
?

Jaký rozdíl mezi
f ($pripojeni->connect_errno > 0)
a
f ($pripojeni->connect_errno)
?

Je jedno, za se
$pripojeni = new mysqli("localhost", "uzivatel", "heslo", "databaze");
napíše s uvozovkami nebo s apostrofy
$pripojeni = new mysqli('localhost', 'uzivatel', 'heslo', 'databaze');
?
Díky.
Fisir
Profil
Reaguji na Milana1236000:
Jak se tam připojit?
Zkrátka máš špatně adresu MySQL serveru, ještě jednou ji zkontroluj a případně to prokonzultuj s webhostingem.

Zkoušel jsem i ten port dát také do uvozovek
Ano, port musí být zapsán jako řetězec.

Jaký rozdíl mezi
f ($pripojeni->connect_errno > 0)
a
f ($pripojeni->connect_errno)
?
Žádný. První případ zkontroluje, zda je connect_errno větší než nula. Druhý přetypuje connect_errno na boolean, v případě, že je connect_errno = 0 to bude false (podmínka neprojde), jinak true (podmínka projde). connect_errno může nabývat pouze hodnot větších nebo rovných nule, takže je funkčnost identická.

Je jedno, za se
$pripojeni = new mysqli("localhost", "uzivatel", "heslo", "databaze");
napíše s uvozovkami nebo s apostrofy
$pripojeni = new mysqli('localhost', 'uzivatel', 'heslo', 'databaze');
?
Ano. (Jak to s těmi apostrofy a uvozovkami je jsem vysvětlil tady.)
Milan1236000
Profil
Fisir:
Díky za vysvětlení. Připojení se mi už podařilo. Zapomněl jsem, že když je databáze na tom samém serveru, píše se místo "IP_adresy_serveru" pouze "localhost".

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0