복붙노트

MySQL API를 PHP로 혼합 할 수 있습니까?

PHP

MySQL API를 PHP로 혼합 할 수 있습니까?

나는 그물을 검색했고 지금까지 내가 본 것은 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 ...))

해결법

  1. ==============================

    1.

    아니요, mysql과 mysqli를 함께 사용할 수 없습니다. 이들은 별도의 API이며 작성한 자원이 서로 호환되지 않습니다.

    mysqli_close가있다.

  2. ==============================

    2.

    참조 용으로 세 가지 MYSQL API에 대한 일반적인 대답을 제공하기 만하면됩니다.

    PHP에서 3 가지 (mysql_ *, mysqli *, PDO) MYSQL API를 함께 섞을 수는 없습니다. 단지 작동하지 않습니다. 매뉴얼 FAQ에도 있습니다 :

    연결에서 쿼리까지 동일한 MySQL API 및 관련 함수를 사용해야합니다.

  3. ==============================

    3.

    기술적으로는 원하는만큼 많은 연결을 사용할 수 있지만 문제는 단순한 오타 (typo)로 인한 것입니다. 하나의 확장 기능에서 다른 기능의 리소스를 사용할 수는 없으며 매우 분명합니다.

    그러나 단일 API 또는 다른 API와 관계없이 동일한 스크립트에서 여러 연결을 피하십시오. 데이터베이스 서버에 부담을주고 자원을 낭비하게됩니다. 기술적으로는 가능하지만 짧은 기간의 리펙토링은 제외하고 코드에 다른 확장자를 섞어서는 안됩니다.

  4. ==============================

    4.

    내 생각에 당신은 할 수 있다고 생각하지만, 당신은 mysqli_ *는 mysqli_connect만을 취하고 mysql_ *

    당신은 더 나은 PDO 학습을 시도하고 싶을지도 모릅니다.

  5. ==============================

    5.

    MySQLi는 MySQL보다 훨씬 안전합니다. 이제는 더 이상 사용되지 않습니다. 그렇기 때문에 MySQLi를 고수해야하며, MySQLi를 서로 섞을 수도 없습니다.

  6. from https://stackoverflow.com/questions/17498216/can-i-mix-mysql-apis-in-php by cc-by-sa and MIT lisence