폐지: mysql_connect()
이 경고는 표시되지만, 프로그램은 정상적으로 동작하고 있습니다.
MySQL 코드가 PHP로 메시지를 표시하고 있습니다.
폐지: mysql_connect():mysql 확장자는 폐지되어 향후 삭제됩니다.회선 2의 C:\xampp\htdocs\task\media\new\connect.inc.php 대신 mysqli 또는 PDO를 사용합니다.
나의connect.inc.php
페이지는
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
이것은 무엇을 의미하며, 어떻게 메시지를 제거할 수 있습니까?
당신의 문제에 대한 몇 가지 해결책이 있습니다.
MySQLi를 사용하는 방법은 다음과 같습니다.
<?php
$connection = mysqli_connect('localhost', 'username', 'password', 'database');
데이터베이스 쿼리를 실행하는 방법도 단순하고 이전 방식과 거의 동일합니다.
<?php
// Old way
mysql_query('CREATE TEMPORARY TABLE `table`', $connection);
// New way
mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');
mysql_*에서 폐지된 경고를 포함하여 모든 경고를 끕니다.
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
교환이 필요한 정확한 파일 및 행 위치는 "/System/Startup"입니다.php > 행: 2 " error_reporting(E_All); error_reporting(E_ALL ^ E_DEPRECATED)으로 대체합니다.
mysql_connect 앞에 '@'를 추가하여 경고를 제거할 수 있습니다.
@mysql_connect('localhost','root','');
그러나 경고에서 알 수 있듯이 mysql 확장자는 나중에 삭제되므로 mysqli 또는 PDO를 사용하십시오.
PHP 5.5.x에서 사용되지 않는 기능
원래 MySQL 확장자는 더 이상 사용되지 않습니다.E_DEPRECATED
데이터베이스에 연결할 때 오류가 발생합니다.대신 **MYSqli 또는 PDO_MySQL 확장을 사용합니다.**
구문:
<?php
$connect = mysqli_connect('localhost', 'user', 'password', 'dbname');
또한 모든 기능을 기능으로 대체
대신
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
이 경고는 새 확장이 나타났기 때문에 표시됩니다.오래된 것을 사용할 수 있다고 생각되지만, 경우에 따라서는 사용할 수 없는 경우도 있습니다.
데이터베이스와의 접속 방법을 나타냅니다.변수의 값만 변경하면 됩니다.
내 연결 파일: 연결.php
<?php
$host='IP or Server Name (usually "localhost") ';
$user='Database user';
$password='Database password';
$db='Database name';
//PHP 5.4 o earlier (DEPRECATED)
$con = mysql_connect($host,$user,$password) or exit("Connection Error");
$connection = mysql_select_db($db, $con);
//PHP 5.5 (New method)
$connection = mysqli_connect($host,$user,$password,$db);
?>
쿼리를 수행할 때 확장도 변경됩니다.
쿼리 파일: "example.php"
<?php
//First I call for the connection
require("connection.php");
// ... Here code if you need do something ...
$query = "Here the query you are going to perform";
//QUERY PHP 5.4 o earlier (DEPRECATED)
$result = mysql_query ($query) or exit("The query could not be performed");
//QUERY PHP 5.5 (NEW EXTENSION)
$result = mysqli_query ($query) or exit("The query could not be performed");
?>
이 방법은 MySQL 향상된 확장을 사용하지만 PDO(PHP Data Objects)를 사용할 수 있습니다.
첫 번째 방법은 MySQL 데이터베이스에서만 사용할 수 있지만 PDO는 다양한 유형의 데이터베이스를 관리할 수 있습니다.
예를 들어 설명하겠습니다만, 저는 첫 번째 것만을 사용하고 있기 때문에, 뭔가 오류가 있으면 정정해 주세요.
내 PDO 연결 파일: "PDOconnection.php"
<?php
$hostDb='mysql:host= "Here IP or Server Name";dbname="Database name" ';
$user='Database user';
$password='Database password';
$connection = new PDO($hostDb, $user, $password);
?>
쿼리 파일(PDO): "example.php"
<?php
$query = "Here the query you are going to perform";
$result=$connection->$query;
?>
마지막으로, 물론 경고를 숨길 수 있지만, 오류가 발생하면 나중에 시간을 절약할 수 있기 때문에 좋은 생각이 아닙니다(우리 모두는 이론을 알고 있지만, 때때로 장시간 작업하면...).뇌가 없습니다^^).
PHP 5.5를 사용하고 있지 않으면 웹 서버가 5.5.0으로 업그레이드되었을 것입니다.
mysql_*
되었습니다.
mysql_*는 PHP v5.5.0에서 공식적으로 폐지되어 향후 삭제될 예정입니다.
Oracle에서 MySQLi로 변환 확인
pdo 오브젝트와 같은 새로운 방법으로 db에 접속하기 시작하라는 경고일 뿐입니다.
http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338
매뉴얼은 여기 있습니다.
http://www.php.net/manual/en/book.pdo.php
일반적으로 "사용되지 않음" 경고는 오래된 기능을 사용하려고 시도하고 있음을 의미합니다.코드가 동작하지 않는다는 의미는 아니지만 리팩터링을 고려해야 합니다.
이 경우 functons mysql_은 권장되지 않습니다.자세한 내용은 이쪽에서 이미 설명하고 있습니다.왜 PHP에서 mysql_* 함수를 사용하면 안 되는가?
PDO 클래스는 이러한 메서드를 대체합니다.Mysql 또는 MariaDB의 예:
$BDD_SQL = new PDO('mysql:host='.BDD_SQL_SERVER.';dbname='.BDD_SQL_BASE.';charset=utf8',
BDD_SQL_LOGIN, BDD_SQL_PWD,
array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //launch exception if error
PDO::ATTR_DEFAULT_FETCH_MODE=> PDO::FETCH_ASSOC
));
출처 : PDO 클래스
<?php
$link = mysqli_connect('localhost','root','');
if (!$link) {
die('Could not connect to MySQL: ' . mysqli_error());
}
echo 'Connection OK'; mysqli_close($link);
?>
이것으로 당신의 문제가 해결됩니다.
코딩이 완료되었으면
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
좋은 옵션입니다만, 처음이라면 반드시 mysqli를 사용해 주세요.
음, 오늘 새로운 호스팅으로 옮겼을 때 그런 메시지를 접했어요! 어쨌든 나는 "mySQ"를 바꾸려고 노력했습니다."L"에서 "mySQLi"로 변경하지만 작동하지 않기 때문에 다음과 같이 했습니다.
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
# Turn off all error reporting
error_reporting(0);
$connect_myconn = "Database Connection";
$hostname_myconn = "localhost";
$database_myconn = "db name";
$username_myconn = "user name";
$password_myconn = "pass";
$myconn = mysql_connect($hostname_myconn, $username_myconn, $password_myconn) or die("<h1 style=margin:0;>A MySQL error has occurred.</h1><p><b>Your Query:</b> " . $connect_myconn . "<br /> <b>Error Number:</b> (" . mysql_errno() . ")</p>" . mysql_error());
mysql_select_db($database_myconn, $myconn);
?>
이 방법은 오류 보고를 꺼두는 것입니다. :)
# Turn off all error reporting
error_reporting(0);
PHP 7+의 경우 대신 다음 코드를 사용할 수 있습니다.
ini_set('display_errors', 0);
ini_set('log_errors', 1);
감사해요.
언급URL : https://stackoverflow.com/questions/21797118/deprecated-mysql-connect
'programing' 카테고리의 다른 글
MySQL과 MariaDB의 차이점은 무엇입니까? (0) | 2022.12.29 |
---|---|
유형 목록을 인스턴스화할 수 없습니다. (0) | 2022.12.29 |
Java에서 계수를 계산하는 방법이 있나요? (0) | 2022.12.29 |
vuex 저장소를 참조할 때 Vue.js 인스턴스 데이터가 누락됨 (0) | 2022.12.29 |
컨트롤러에서 리다이렉트된 후 Larabel에 오류 메시지 표시 (0) | 2022.12.29 |