치명적인 오류:검출되지 않은 오류: 정의되지 않은 함수 mysql_connect() 호출
XAMPP 및 MySQL Server와 간단한 연결을 시도하려고 하는데 데이터를 입력하거나 데이터베이스에 연결하려고 할 때마다 이 오류가 발생합니다.
치명적인 오류:Uncaughted Error: C:\xampp\htdocs\register에서 정의되지 않은 함수 mysql_connect()를 호출합니다.php:22
스택 트레이스: #0 {main}이(가) C:\xampp\htdocs\register에 느려졌습니다.22행의 php
22행의 예:
$link = mysql_connect($mysql_hostname , $mysql_username);
mysql_*
기능이 PHP 7에서 제거되었습니다.
XAMPP에 PHP 7이 있을 수 있습니다.이제 두 가지 선택지가 있습니다.MySQLi 및 PDO.
당신은 사용할 수 있mysqli_connect($mysql_hostname , $mysql_username)
대신mysql_connect($mysql_hostname , $mysql_username)
.
mysql_*
PHP 7에서 기능이 제거되었습니다. 이제 두 가지 대안이 있습니다.MySQLi 및 PDO.
MySQLi 또는 PDO 확장자를 사용하는 것이 좋습니다.오래된 mysql 확장자는 PHP 5.5.0에서 폐지되어 PHP 7에서 삭제되었기 때문에 새로운 개발에는 사용하지 않는 것이 좋습니다.
PHP는 MySQL에 접속하기 위한 3가지 API를 제공합니다.다음은 mysql, mysqli 및 PDO 확장에 의해 제공되는 API를 보여 줍니다.각 코드 조각은 "example.com"에서 실행 중인 MySQL 서버에 사용자 이름 "displate"와 암호 "password"를 사용하여 연결합니다.그리고 쿼리를 실행하여 사용자에게 인사합니다.
예 #1 3개의 MySQL API 비교
<?php
// mysqli
$mysqli = new mysqli("example.com", "username", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
// mysql
$c = mysql_connect("example.com", "username", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>
MySQLi와 PDO를 모두 사용해보고 어떤 API 디자인을 선호하는지 알아보는 것이 좋습니다.
API 선택 및 PHP에서 mysql_* 함수를 사용하면 안 되는 이유 확인.
다른 답변에서 알 수 있듯이...어떤 사람이 (어떤 이유로든) PHP를 업그레이드할 때 이전 코드가 작동하지 않아야 한다고 결정했습니다. 왜냐하면 그는 당신보다 더 잘 알고 있고 당신의 코드가 무엇을 하는지, 당신이 얼마나 쉽게 업그레이드 할 수 있는지에 대해 신경 쓰지 않기 때문입니다.
프로젝트를 하루아침에 업그레이드할 수 없다면
PHP 버전을 작동 가능한 버전으로 다운그레이드합니다.
아니면...
https://github.com/dshafik/php7-mysql-shim 또는 https://github.com/dotpointer/mysql-shim,과 같은 심(polyfill의 일종)을 사용하여 다음 장소를 찾습니다.
include_once("choice_shim.php");
당신의 코드 어딘가에
갱신하고 싶은 마음이 생길 때까지 오래된 PHP 코드가 계속 가동됩니다.
mysql_*
기능이 PHP 7에서 제거되었습니다.
이제 두 가지 선택지가 있습니다.MySQLi 및 PDO.
다음으로 MySQLi 대체 제품으로 이행하기 전(-)과 후(+)를 비교한 코드로 동작하지 않습니다.
-if (!$dbLink = mysql_connect($dbHost, $dbUser, $dbPass))
+if (!$dbLink = mysqli_connect($dbHost, $dbUser, $dbPass))
-if (!mysql_select_db($dbName, $dbLink))
+if (!mysqli_select_db($dbLink, $dbName))
-if (!$result = mysql_query($query, $dbLink)) {
+if (!$result = mysqli_query($dbLink, $query)) {
-if (mysql_num_rows($result) > 0) {
+if (mysqli_num_rows($result) > 0) {
-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {
-mysql_close($dbLink);
+mysqli_close($dbLink);
mysql_
기능이 PHP 7에서 제거되었습니다. 이제 MySQLi 또는 PDO를 사용할 수 있습니다.
MySQLi의 예:
mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);
내 경우처럼 오타를 범하지 않았는지 확인합니다.
msyql_sql_assoc는 mysql이어야 합니다.
mysqli의 경우 다음을 사용할 수 있습니다.
$db = ADONewConnection('mysqli');
... ...
$db-> (설정명 'utf8');
도커파일을 작성할 때 같은 문제가 발생할 경우 동일한 시나리오에 직면했습니다.- mysql_connect 함수에서 다음과 같이 변경했습니다.-
if ($CONN = @mysqli_connect ($DBHOST, $DBUSER, $DBPASS) {//mysql_query("SET CHARATER SET 'gbk", $CONN);
언급URL : https://stackoverflow.com/questions/34579099/fatal-error-uncaught-error-call-to-undefined-function-mysql-connect
'itsource' 카테고리의 다른 글
미리 정의된 개체 대신 페이지 새로 고침 후 Vuex 상태가 null로 변환됩니다. (0) | 2022.09.23 |
---|---|
MySQL과 MariaDB 중 성능 지향 데이터베이스는 무엇입니까? (0) | 2022.09.23 |
JAVA_가 존재하는 이유는 무엇입니까?HOME 환경 변수? (0) | 2022.09.23 |
__init__() 메서드를 사용한 Python super()에 대해 (0) | 2022.09.23 |
여러 조건을 가진 Laravel 웅변가 내부 결합 (0) | 2022.09.23 |