developer tip

치명적인 오류 : 포착되지 않은 오류 : 정의되지 않은 함수 mysql_connect () 호출

optionbox 2020. 11. 26. 08:12
반응형

치명적인 오류 : 포착되지 않은 오류 : 정의되지 않은 함수 mysql_connect () 호출


XAMPP 및 MySQL 서버와 간단한 연결을 시도하고 있지만 데이터를 입력하거나 데이터베이스에 연결하려고 할 때마다이 오류가 발생합니다.

치명적 오류 : 포착되지 않은 오류 : C : \ xampp \ htdocs \ register.php : 22의 정의되지 않은 함수 mysql_connect () 호출
스택 추적 : # 0 {main}이 C : \ xampp \ htdocs \ register.php에서 22 행에 발생했습니다.

22 행의 예 :

$link = mysql_connect($mysql_hostname , $mysql_username);

mysql_* PHP 7에서는 함수가 제거되었습니다.

XAMPP에 PHP 7이있을 것입니다. 이제 MySQLiPDO의 두 가지 대안이 있습니다 .

또한 여기 에 PDO에 대한 멋진 위키 페이지가 있습니다.


mysqli_connect($mysql_hostname , $mysql_username)대신 사용할 수 있습니다 mysql_connect($mysql_hostname , $mysql_username).

mysql_*함수는 PHP 7에서 제거되었습니다. 이제 MySQLiPDO의 두 가지 대안이 있습니다.


MySQLi 또는 PDO 확장을 사용하는 것이 좋습니다. PHP 5.5.0에서 더 이상 사용되지 않고 PHP 7에서 제거되었으므로 새로운 개발을 위해 이전 mysql 확장을 사용하지 않는 것이 좋습니다.

PHP는 MySQL에 연결할 수있는 세 가지 API를 제공합니다. 아래에서는 mysql, mysqli 및 PDO 확장에서 제공하는 API를 보여줍니다. 각 코드 조각은 사용자 이름 "username"과 암호 "password"를 사용하여 "example.com"에서 실행되는 MySQL 서버에 대한 연결을 생성합니다. 그리고 사용자를 맞이하기 위해 쿼리가 실행됩니다.

예제 # 1 세 가지 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를 선택 하고 이유는 mysql_로 * 함수는 PHP에서 사용하지 말아야?


mysql_* PHP 7에서는 함수가 제거되었습니다.

이제 MySQLiPDO의 두 가지 대안이 있습니다 .

다음은 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)) {

-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {

-mysql_close($dbLink);
+mysqli_close($dbLink);

다른 답변에서 알 수 있듯이 ... 어떤 사람은 (어떤 이유에서든) PHP를 업그레이드 할 때 이전 코드가 작동하지 않는다고 결정했습니다. 왜냐하면 그는 당신보다 더 잘 알고 코드가 무엇을하는지 또는 코드가 얼마나 간단한 지 신경 쓰지 않기 때문입니다. 업그레이드 할 수 있습니다.

하룻밤 사이에 프로젝트를 업그레이드 할 수 없다면

PHP 버전을 작동하는 버전으로 다운 그레이드

또는...

use a shim (kind of polyfill) such as https://github.com/dshafik/php7-mysql-shim or https://github.com/dotpointer/mysql-shim, and then find a place for include_once("choice_shim.php"); somewhere in your code

That will keep your old PHP code up and running until you are in a mood to update...


mysql_ functions have been removed from PHP 7. You can now use MySQLi or PDO.

MySQLi example:

mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);

mysqli_connect reference link


You got that error because the mysql_connect function (actually, all mysql_* functions) were removed from PHP 7. You can now use MySQLi or PDO.

Example:

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

Make sure you have not committed a typo as in my case

msyql_fetch_assoc should be mysql


For mysqli you can use :

$db = ADONewConnection('mysqli');

... ...

$db->execute("set names 'utf8'");

참고URL : https://stackoverflow.com/questions/34579099/fatal-error-uncaught-error-call-to-undefined-function-mysql-connect

반응형