Przeszukałem sieć i do tej pory zauważyłem, że możesz używać mysql_
i mysqli_
razem oznaczać:
<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
echo "failed to connect";
}else{
echo "connected";
}
mysql_close($con);
echo "Done";
?>
lub
<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
echo "failed to connect";
}else{
echo "connected";
}
mysqli_close($con);
echo "Done";
?>
Są prawidłowe, ale kiedy używam tego kodu, otrzymuję:
Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done
Po pierwsze i to samo, z wyjątkiem z mysqli_close()
. Po drugie.
Jaki jest problem? Nie mogę używać mysql_
i mysqli
razem? Czy to normalne? Czy sposób, w jaki mogę sprawdzić, czy połączenia są w ogóle prawidłowe? (the if(mysq...)
)
mysql_*
całkowicie unikać korzystania z funkcji. Są podatne na błędy i niebezpieczne, a wkrótce zostaną usunięte z PHP ( w tej chwili są oznaczone jako przestarzałe ). [Ta świetna odpowiedź] [0] zawiera dużo więcej szczegółów wyjaśniających, dlaczego są złe. [0]: stackoverflow.com/a/12860046/1055295
mysqli_*
funkcji, a dobry kod za pomocą funkcji mysql_*
. Ale ta ostatnia kategoria jest oznaczona jako przestarzała, ponieważ jest to gorszy zestaw funkcji, nie mogący obsługiwać wywołań w stylu obiektów obiektowych ani nawet przygotowanych instrukcji (by wymienić tylko dwa przykłady). Mając do wyboru dwa narzędzia do wykonania tej samej pracy, z których jedno jest wyraźnie lepsze na dłuższą metę i bardziej elastyczne, czy poprawna odpowiedź nie jest oczywista?