[php] PHP에서 MySQL API를 혼합 할 수 있습니까?

나는 인터넷을 검색하고 지금까지 내가 본 당신이 사용할 수 있다는 한 mysql_mysqli_의미를 함께 :

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>

또는

<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysqli_close($con);
echo "Done";
?>

유효하지만이 코드를 사용할 때 얻는 것은 다음과 같습니다.

Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done

를 제외하고 첫 번째와 동일 mysqli_close()합니다. 두 번째.

무엇이 문제입니까? 내가 사용할 수 없습니다 mysql_mysqli함께? 아니면 정상입니까? 연결이 유효한지 확인할 수있는 방법이 있습니까? ( if(mysq...))



답변

아니, 당신은 사용할 수 없습니다 mysqlmysqli함께. 이들은 별도의 API이며 이들이 생성하는 리소스는 서로 호환되지 않습니다.

있다 mysqli_close하지만.


답변

참조와 함께 세 가지 MYSQL API에 대한 일반적인 답변을 제공하십시오.

당신은 세 가지 (의 혼합 할 수 없습니다 mysql_*, mysqli_*, PDO그냥 작동하지 않습니다 함께 PHP에서) MYSQL의 API의를. 매뉴얼 FAQ 에도 있습니다 .

이다 확장을 혼합 할 수 없습니다 . 예를 들어 mysqli 연결을 PDO_MySQL 또는 ext / mysql에 전달 하면 작동하지 않습니다 .


연결부터 쿼리까지 동일한 MySQL API 및 관련 기능을 사용해야합니다.


답변

기술적으로는 원하는만큼의 개별 연결을 사용할 수 있지만 문제는 단순한 오타로 인해 발생합니다. 한 확장의 리소스 만 다른 확장의 기능과 함께 사용할 수는 없습니다.

그러나 단일 API 또는 다른 API에 관계없이 동일한 스크립트에서 여러 연결을 피해야 합니다. 데이터베이스 서버에 부담을주고 리소스를 고갈시킵니다. 따라서 기술적으로는 가능하지만 코드에서 다른 확장을 혼합해서는 안되며 리팩토링의 짧은 기간 동안 절약 할 수 있습니다.


답변

MySQLiMySQL어쨌든 현재 사용되지 않는 것보다 훨씬 더 안전 합니다. 그렇기 때문에 고수해야 MySQLi하며 둘 다 다르기 때문에 혼합 할 수 없습니다.


답변