모든 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
'programing' 카테고리의 다른 글
구성 요소가 선언되지 않았습니다. (0) | 2023.10.06 |
---|---|
WordPress 데이터베이스 오류: 사용되지 않음: mysql_connect() (0) | 2023.10.06 |
MySQL에서 일을 빼는 방법 (0) | 2023.10.06 |
jquery 엔터키를 잡고 이벤트를 탭으로 변경하는 방법 (0) | 2023.10.06 |
iOS 7의 사용자 지정 글꼴 (0) | 2023.10.06 |