programing

모든 mysqli_ 함수를 맹목적으로 mysqli_로 대체할 수 있습니까?

javajsp 2023. 10. 6. 20:54

모든 mysqli_ 함수를 맹목적으로 mysqli_로 대체할 수 있습니까?

는 했습니다를 이 있습니다.mysql_query() 내내 말이야 난 막 그 됐어요mysql_PHP 5.5에서 폐지되었고 PHP 7에서 삭제되었습니다.

를 할 수 .mysql_능 .mysqli_내 프로젝트에 맹목적으로?를 들어,어,것을 하는 것입니다.mysql_query()와 함께mysqli_query() 부작용은 없습니까?

단답형은 아니오입니다. 함수가 동등하지 않습니다.

좋은 소식은 변경해야 할 콜/프로젝트가 많을 경우 도움이 되는 컨버터 툴이 있다는 것입니다.이렇게 하면 스크립트가 바로 작동합니다.

https://github.com/philip/MySQLConverterTool

오라클 오리지널 버전의 포크 버전이고 코셔입니다.

코드를 업데이트하는 것은 그리 어렵지 않으며, 어쨌든 개체 지향 방법론으로 마이그레이션하는 것이 좋을 수도 있습니다.

1) 더 커넥션

예를 들어 연결을 PHP 변수로 저장하는 새로운 연결 기능이 필요합니다.

$mysqli = new mysqli($host, $username, $password, $database);

을(를)에 대한 $mysqli. 에 저장할 수 있습니다.$db또는 원하는 대로 사용할 수 있지만 코드 전체에서 이를 사용하여 연결을 참조해야 합니다.

연결을 열기 전에 mysqli에 대한 오류 보고를 활성화해야 합니다.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

2) 더 쿼리

참고: MySQLi에서 사용할 수 있는 준비된 문으로 SQL 주입을 방지해야 합니다.어떻게 하면 PHP에서 SQL 주입을 방지할 수 있을까요? 하지만 여기서는 기본 사항만 다루려고 합니다.

를 사용해야 . 그리고 다른mysqli_기능들. 에서는 첫 .프로시저 코드에서는 첫 번째 인수이고, OO에서는 수업 방법처럼 적습니다.

절차:

$result = mysqli_query($mysqli, $sql);

OO:

$result = $mysqli->query($sql);

3) 가져오기 결과

것은 의 와 .mysql_절차적 기능.

while ($row = mysqli_fetch_assoc($result))

그러나 로서$result할 수 제 mysqli의 객체이므로 객체 함수다를 사용할 수 있습니다.

while ($row = $result->fetch_assoc())

4) 연결 닫기

따라서 이전과 마찬가지로 연결을 근접함수에 포함시키고, 절차상의 인수로서;

mysqli_close($mysqli);

그리고 OO에서 함수를 실행하는 객체로서;

$mysqli->close();

내가 그 모든 것을 다 조사했다면 난 영원히 여기에 있을 텐데, 당신은 그 생각을 알고 있습니다.자세한 내용은 설명서를 참조하십시오.연결 닫기, 결과 해제, 오류 및 행 계산 기능을 모두 변환하는 것을 잊지 마십시오.

기본 경험칙은 데이터베이스 연결을 사용하는 함수에 대한 것으로, 지금 함수에 포함시킬 필요가 있습니다(절차상 첫 번째 인수로 사용하거나 OO에서 함수를 호출할 때 사용하는 개체). 또는 결과 집합의 경우 함수를 다음으로 변경할 수 있습니다.mysqli_또는 결과 집합을 개체로 사용합니다.

이전 프로젝트에서 모든 호출을 mysqli 함수로 변환할 수 없는 경우 라이브러리 php7-mysql-sim을 설치하여 포함할 수 있습니다.

그것은 mysqli를 사용하여 PHP 7에서 mysql의 투명한 대체물을 만들기 위해 노력할 것입니다.성능이 떨어지는 것은 분명하지만 몇 분 안에 문제를 해결할 수 있는 해결책입니다.PHP 5.6으로 작업하는 프로젝트에 라이브러리를 안전하게 포함할 수 있습니다(무시됩니다).

if (defined('PHP_VERSION_ID') && (PHP_VERSION_ID >= 50600)) { require_once "mysql-shim.php"; }

그럴 수 없습니다. mysql과 mysqli의 함수 중 일부는 다른 매개 변수를 필요로 합니다.따라서 동일한 모수를 사용하는 방법을 알아야 합니다.

언급URL : https://stackoverflow.com/questions/26476162/can-i-blindly-replace-all-mysql-functions-with-mysqli