Soru Ölümcül hata: Yakalanmayan Hata: Tanımlanmamış bir işlev çağrısı mysql_connect ()


Ben XAMPP ve MySQL sunucusu ile basit bir bağlantı yapmaya çalışıyorum, ancak veri girmeye veya veritabanına bağlanmaya çalıştığımda, bu hatayı alıyorum.

Ölümcül hata: Yakalanmayan Hata: C: \ xampp \ htdocs \ register.php: undefined işlevine mysql_connect () çağrısı
  Yığın izi: satır 22'de C: \ xampp \ htdocs \ register.php içine atılan # 0 {main}

22 numaralı satır örneği:

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

44
2018-01-03 16:55


Menşei


tam kodunuzu geçmiş. - Ishan Shah
Lütfen kullanma mysql_* yeni kodda işler. Artık korunmuyorlar ve resmi olarak kullanımdan kaldırıldı. Bakın kırmızıkutu? Hakkında bilgi al hazırlanan ifadeleryerine ve kullan PDO veya MySQLi. - Rizier123
<? php $ mysql_hostname = "ipim"; $ mysql_username = "root"; $ mysql_password = ""; $ mysql_database = "polis"; $ db = mysql_connect ($ mysql_hostname, $ mysql_username) veya die ("SQL ile Bağlantı sorunu. Ana bilgisayar adı, Kullanıcı adı veya şifre yanlış!"); mysql_select_db ($ mysql_database, $ db) veya die ("Veritabanına bağlanamadı! kimlik bilgilerini kontrol et"); mysql_connect ($ mysql_hostname, $ mysql_username)?> - Demeteor
Mysql_connect ($ mysql_hostname, $ mysql_username) mysql_connect ($ mysql_hostname, $ mysql_username, $ mysql_password) olarak değiştirin. Ayrıca, PDO veya MySQLi'ye geçin! - Chris G
phpmyadim'de şifre kullanmamam durumunda? (tüm bu uzak şeyleri yapmaya çalışıyorum sadece veri tabanına bağlanabilmek için cep telefonuna ihtiyacım var) - Demeteor


Cevaplar:


mysql_* işlevler PHP 7'de kaldırılmıştır.

Muhtemelen XAMPP'de PHP 7 var. Şimdi iki seçeneğiniz var: MySQLi ve PDO.

Bunlara ek olarak, İşte PDO hakkında güzel bir wiki sayfası.


78
2018-01-03 18:12





Kullanabilirsiniz mysqli_connect($mysql_hostname , $mysql_username) yerine mysql_connect($mysql_hostname , $mysql_username).

mysql_* PHP 7'den itibaren fonksiyonlar kaldırıldı. Şimdi iki seçeneğiniz var: MySQLi ve PDO.


24
2018-03-29 08:15



Yine de kodunuzdaki diğer değişikliklerin yapılması gerekebilir. - ceejayoz
Ubuntu 16.04'te bu gerekli php7.0-mysql paketi. @Ceejayoz’un dediği gibi, aslında yalnızca isimleri değil argümanlarının sırasını değiştirmek için gereken birkaç API değişikliği vardır. Çok sinir bozucu. - Drew Noakes
Kaba bir tane ama benim için çalıştı, en azından kodumu PDO bağlantısıyla optimize etene kadar - adeguk


MySQLi veya PDO uzantılarının kullanılması önerilir. PHP 5.5.0'da kullanımdan kaldırıldığı ve PHP 7'de kaldırıldığı için, yeni geliştirme için eski mysql uzantısının kullanılması önerilmez. 

PHP MySQL'e bağlanmak için üç farklı API sunar. Aşağıda mysql, mysqli ve PDO uzantıları tarafından sağlanan API'ları gösteriyoruz. Her kod pasajı, "kullanıcı adı" kullanıcı adı ve "şifre" şifresi kullanılarak "ornek.com" üzerinde çalışan bir MySQL sunucusuna bağlantı oluşturur. Ve kullanıcıyı karşılamak için bir sorgu çalıştırılır.

Örnek 1 - Üç MySQL API'sini Karşılaştırma

<?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']);
?>

Hem MySQLi hem de PDO'yu denemenizi ve tercih ettiğiniz API tasarımını öğrenmenizi öneririm.

okumak Bir API seçilmesi ve Neden PHP'de mysql_ * işlevlerini kullanmamalıyım?


14
2018-01-17 17:30





Diğer cevapların da belirttiği gibi ... Bazı adamlar (her ne sebeple olursa olsun) eski kodunuzun php'nizi yükselttiğinizde işe yaramayacağına karar verdi çünkü sizden daha iyi biliyor ve kodunuzun ne yaptığını ya da sizin için ne kadar basit olduğunu umursamıyor yükseltmek.

Peki, projenizi bir gecede yükseltemezseniz

php sürümünüzü, hangi sürümü çalıştıysanız indirin

veya...

Bunun gibi bir şim (kinda polyfill) kullanın https://github.com/dshafik/php7-mysql-shim veya https://github.com/dotpointer/mysql-shim sonra bir yer bul include_once("choice_shim.php"); kodunuzun bir yerinde

Bu, eski php kodunuzu güncel tutacak olana kadar devam ettirecek ...


2
2018-05-21 08:39





mysql_ işlevler PHP 7'den kaldırılmıştır. Artık kullanabilirsiniz MySQLi veya PDO.

MySQLi örneği:

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

mysqli_connect referans bağlantısı


1
2017-09-12 06:27





mysql_* işlevler PHP 7'de kaldırılmıştır.

Şimdi iki seçeneğiniz var: MySQLi ve PDO.

Aşağıdakiler, çalışma kodunun doğrudan alındığı MySQLi'deki bazı yaygın değişikliklerin (-) ve sonrası (+) karşılaştırmasıdır:

-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);

0
2018-02-15 23:53



neden aşağı oy? - user664833


Bu hatayı aldınız çünkü mysql_connect işlev (aslında, hepsi mysql_* işlevler) PHP 7'den kaldırıldı. Artık kullanabilirsiniz MySQLi veya PDO.

Örnek:

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

-1
2017-08-26 16:07