অবচিত: মাইএসকিএল_কনেক্ট ()


97

আমি এই সতর্কতাটি পাচ্ছি, তবে প্রোগ্রামটি এখনও সঠিকভাবে চলছে।

মাইএসকিউএল কোড আমাকে পিএইচপিতে একটি বার্তা দেখাচ্ছে:

অবচিত: মাইএসকিএল_কনেক্ট (): মাইএসকিএল এক্সটেনশানটি অবচিত করা হয়েছে এবং ভবিষ্যতে অপসারণ করা হবে: সি এর পরিবর্তে মাইএসকিলি বা পিডিও ব্যবহার করুন: line xampp \ htdocs \ কার্য \ মিডিয়া \ নতুন \ কানেক্ট.ইন.পি.পিপি লাইন 2 এ

আমার connect.inc.phpপৃষ্ঠা

<?php
  $connect = mysql_connect('localhost','root','');
  mysql_select_db('dbname');
?>

এর অর্থ কী এবং আমি কীভাবে বার্তাটি মুছে ফেলতে পারি?


4
Mysqli_ * ফাংশন বা PDO ব্যবহার করুন !!!!
ক্রিশ আর

সম্ভাব্য সদৃশ। stackoverflow.com/questions/13944956/...
desbest

4
সম্পর্কিত আপডেট, মাইএসকিএল_ * ফাংশনগুলি পিএইচপি 7-তে সরানো হয়েছে। পরিবর্তে MySQLi ব্যবহার করুন Use
টেকডুড

উত্তর:


144

আপনার সমস্যার কয়েকটি সমাধান রয়েছে।

মাইএসকিউএলির সাথে উপায়টি এরকম হবে:

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

মাইএসকিএল_ * থেকে তাদের সহ সমস্ত অবজ্ঞাত সতর্কতা বন্ধ করুন:

<?php
error_reporting(E_ALL ^ E_DEPRECATED);

যথাযথ ফাইল এবং লাইন অবস্থান যা প্রতিস্থাপন করা দরকার তা হ'ল "/ সিস্টেমে / স্টার্টআপ.পিপি> লাইন: 2" ত্রুটি_বহরণ (ই_আল); ত্রুটি_বন্দরের সাথে প্রতিস্থাপন (E_ALL ^ ​​E_DEPRECATED);


34

আপনি mysql_connect এর আগে '@' যোগ করে সতর্কতাটি সরাতে পারেন।

@mysql_connect('localhost','root','');

তবে সতর্কতাটি আপনাকে যেমন বলেছে, ভবিষ্যতে মাইএসকিএল এক্সটেনশন সরানো হবে বলে মাইএসকিলি বা পিডিও ব্যবহার করুন।


4
আমি দেখতে পাচ্ছি আপনি কেবল নিজের মতো করে খারাপ অভ্যাসই ব্যবহার করছেন না বরং অন্যকেও এটি করতে বলছেন
আপনার সাধারণ অনুভূতি

29
সতর্কবার্তাটি লুকানো একটি ভাল জিনিস। এটি প্রোগ্রামটি চালু রাখে এবং মাইএসকিএল_এক্সএক্সএক্সএক্সএক্সএক্সএক্স ফাংশন মানে এখনই কোনও সমস্যা নেই কারণ তারা বর্তমান সংস্করণে ভালভাবে কাজ করে। আপনি একে অবহেলিত হওয়ার বিষয়ে যা বলছেন তা হ'ল ভুল বার্তার অংশ, যাতে এটি পুনরাবৃত্তি করা বুদ্ধিমানের কাজ নয়। প্রত্যেকে দেখতে পাবে যে এটি অবনমিত হয়েছে, হ্যাঁ, আপনাকে ধন্যবাদ, দয়া করে পরবর্তী next ভবিষ্যতে, মাইএসকিএল ফাংশন কলগুলি স্পষ্টতই প্রতিস্থাপন করা হবে। ততক্ষণ পর্যন্ত, সতর্কতাটি আড়াল করা একটি কার্যকর পরামর্শ যা আমরা যখন মাইকিকিএল_এক্সএক্সএক্সএক্স কলগুলিকে ব্যাকগ্রাউন্ডের অন্য কোনও কিছুর সাথে প্রতিস্থাপন করি তখন সাইটটি পরিচালনা করার অনুমতি দেওয়া হয়। কুসংস্কারযুক্ত হয়ে উঠবেন না।
dkellner

4
এখানে অবিশ্বাস্যভাবে দরকারী মন্তব্য .. অবমানিত সতর্কতাগুলিতে ছেড়ে যান এবং আপনার লাইভ কোডটি ভেঙে দিন? চমৎকার .. অবশ্যই সতর্কতাটি আড়াল করা আদর্শ নয় তবে কোডটি কার্যক্ষমতায় রাখার জন্য এটি করা উচিত। একজন ভাল বিকাশকারী এখনও অবহেলিত কোডের উপর নজর রাখবে এবং ভবিষ্যতের আপডেটের জন্য এটি নির্ধারণ করবে।
sturrockad

4
ত্রুটি / সতর্কতা দমন কীভাবে এটি সংশোধন করা হয় তা নয় - যদি আপনার উত্পাদন সার্ভারে ব্যবহারকারীদের কাছে কাঁচা সতর্কতা / ত্রুটি উপস্থাপন করা হয় তবে আপনি এটি ভুল করছেন - যদি আপনার কেবলমাত্র প্রোডাকশন সার্ভার থাকে এবং পরীক্ষার জন্য কোনও বিকাশের পরিবেশ না থাকে তবে আপনি ' এটি আবার করণীয় - আপনি যদি উত্পাদনে ছাড়ার আগে বিকাশে ত্রুটি / সতর্কতাগুলি ঠিক না করে থাকেন তবে আপনি এটি সবচেয়ে খারাপ করছেন
হুরাসকোল

4
@ স্টুররোকড একজন ভাল বিকাশকারী ত্রুটিগুলি আরও ভালভাবে পরিচালনা করতে পারে তাই তারা কখনই জনসাধারণের মধ্যে ফাঁস হয় না এবং কেবল বিকাশকারীদের দেখতে ব্যাক- এন্ডে লগইন করে। আপনি যদি এখনও বন্যের মধ্যে ত্রুটি বার্তাগুলি প্রকাশ করে লাইভ কোডটি ভঙ্গ করছেন তবে আপনার সম্ভবত সম্পূর্ণ ওয়েবসাইটটি পুনর্বিবেচনা করা উচিত। সতর্কতা দমন করার এটি কোনও বৈধ অজুহাত নয়।
animuson

10

এই একা জন্য অবচয় বার্তা দমন করতে (এবং আপনার কোডে অন্যান্য অবমূল্যায়নের বিষয়ে অবহিত থাকুন) আপনি @:

<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?> 

নোট করুন যে পিএইচপি 7+ এর সাথে এটি আর কাজ করবে না (এভাবে আমার ডাউনভোট); এটি কোনও 'সমাধান' নয় ...
গুইনেথ ল্লেওলিন

ওপি হ'ল পিএইচপি 5.5 এবং 5.6 দ্বারা উত্পন্ন হ্রাসের বার্তা সম্পর্কে। সমাধানটি সেই পরিবেশের মধ্যে দাঁড়িয়ে আছে যেখানে ওপি বার্তা প্রদর্শিত হয়।
আইয়ানএমসিএল

8

পিএইচপি 5.5.x এ অবমুক্ত বৈশিষ্ট্যগুলি

মূল মাইএসকিউএল এক্সটেনশন বর্তমানে অবচিত হয়েছে এবং উত্পন্ন করবে E_DEPRECATEDএকটি ডাটাবেসের সাথে সংযোগ ত্রুটি। পরিবর্তে, ** MYSQLi বা PDO_MySQL এক্সটেনশান ব্যবহার করুন * **

বাক্য গঠন:

<?php
  $connect = mysqli_connect('localhost', 'user', 'password', 'dbname');

এছাড়াও, সমস্ত প্রতিস্থাপন mysql_*মধ্যে ফাংশন mysqli_*ফাংশন

পরিবর্তে

<?php
 $connect = mysql_connect('localhost','root','');
  mysql_select_db('dbname');
?> 

6

এই সতর্কতাটি প্রদর্শিত হবে কারণ একটি নতুন এক্সটেনশন উপস্থিত হয়েছে। এটি অনুমান করে যে আপনি এখনও পুরানোটি ব্যবহার করতে পারেন তবে কিছু ক্ষেত্রে এটি অসম্ভব।

আমি আপনাকে দেখাব যে আমি কীভাবে ডাটাবেসের সাথে সংযোগটি করব। আপনার কেবল ভেরিয়েবলের মান পরিবর্তন করতে হবে।

আমার সংযোগ ফাইল: সংযোগ.এফপি

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

কোনও ক্যোয়ারি সম্পাদনের সময় এক্সটেনশনটিও পরিবর্তিত হয়।

ক্যোয়ারী ফাইল: "উদাহরণ.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");    
?>

এইভাবে মাইএসকিউএল উন্নত এক্সটেনশন ব্যবহার করছে তবে আপনি পিডিও (পিএইচপি ডেটা অবজেক্টস) ব্যবহার করতে পারেন ।

প্রথম পদ্ধতিটি কেবল মাইএসকিউএল ডাটাবেসগুলির সাহায্যে ব্যবহার করা যেতে পারে তবে পিডিও বিভিন্ন ধরণের ডাটাবেস পরিচালনা করতে পারে।

আমি একটি উদাহরণ স্থাপন করতে যাচ্ছি তবে এটি বলা দরকার যে আমি কেবল প্রথমটি ব্যবহার করি তাই কোনও ত্রুটি থাকলে দয়া করে আমাকে সংশোধন করুন।

আমার 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);
?>

ক্যোয়ারী ফাইল (পিডিও): "উদাহরণ.php"

<?php
 $query = "Here the query you are going to perform";
 $result=$connection->$query;
?>

শেষ করার জন্য অবশ্যই বলুন যে আপনি অবশ্যই সতর্কতাটি আড়াল করতে পারেন তবে এটি একটি ভাল ধারণা নয় কারণ কোনও ত্রুটি ঘটলে ভবিষ্যতে সময় বাঁচাতে আপনাকে সহায়তা করতে পারে (আমাদের সবাই তত্ত্বটি জানেন তবে আপনি যদি মাঝে মাঝে প্রচুর ঘন্টা কাজ করেন তবে .. । মস্তিষ্ক নেই ^^)।


4

কারণ আপনি পিএইচপি 5.5 ব্যবহার করছেন বা আপনার ওয়েবসারভার 5.5.0 এ আপগ্রেড করা হবে।

mysql_*ফাংশন 5.5.0 হিসাবে অবচিত হয়েছে

এখানে চিত্র বর্ণনা লিখুন

Source



1

এটি কেবলমাত্র একটি সতর্কতা যা আপনাকে আপনার ডিবিতে পিডিও অবজেক্টের সাথে সংযোগের নতুন পদ্ধতিগুলি ব্যবহার শুরু করতে বলছে

http://code.tutsplus.com / টিউটোরিয়ালস / php-datedia-access-are-you-doing-it-cor درستly--net-25338

ম্যানুয়াল এখানে

http://www.php.net/manual/en/book.pdo.php


1

সাধারণভাবে সতর্কতার অর্থ হ'ল আপনি পুরানো যে ফাংশনটি ব্যবহার করার চেষ্টা করছেন। এর অর্থ এই নয় যে আপনার কোডটি কাজ করবে না, তবে আপনার পুনঃসংশোধন করা উচিত।

আপনার ক্ষেত্রে ফ্যাঙ্কটন মাইএসকিএল_ হ্রাস করা হয়েছে। আপনি যদি সে সম্পর্কে আরও জানতে চান তবে এখানে ইতিমধ্যে ভাল ব্যাখ্যা রয়েছে: আমি পিএইচপি-তে কেন mysql_ * ফাংশন ব্যবহার করব না?


1
<?php 
$link = mysqli_connect('localhost','root',''); 
if (!$link) { 
    die('Could not connect to MySQL: ' . mysqli_error()); 
} 
echo 'Connection OK'; mysqli_close($link); 
?>

এই আপনার সমস্যার সমাধান হবে।


1

পিডিও ক্লাস এই পদ্ধতিগুলি প্রতিস্থাপন করে। মাইএসকিএল বা মারিয়াডিবি এর উদাহরণ:

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

সূত্র: পিডিও ক্লাস


1

আপনি যদি আপনার কোডিংটি করে থাকেন তবে

ini_set("error_reporting", E_ALL & ~E_DEPRECATED); 

ভাল বিকল্প তবে আপনি যদি শুরুতে থাকেন তবে অবশ্যই আপনার mysqli ব্যবহার করা উচিত।


1

ঠিক আছে, আমি যখন আজ নতুন হোস্টিংয়ে চলে এসেছি তখন আমি ঠিক এই জাতীয় বার্তার মুখোমুখি হয়েছি! যাইহোক আমি "মাইএসকিউএল" কে "মাইএসকিউলি" তে পরিবর্তন করার চেষ্টা করেছি কিন্তু কাজ করছি না, তাই আমি এটি করেছি:

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

পিএইচপি 7+ এর জন্য আপনি পরিবর্তে এই কোডটি ব্যবহার করতে পারেন:

ini_set('display_errors', 0);
ini_set('log_errors', 1);

ধন্যবাদ


4
হাই, হ্যাঁ, পিএইচপি 7+ এর জন্য আপনি এটি ব্যবহার করতে পারেন ini_set('display_errors', 0); ini_set('log_errors', 1);। আমি উপরের উত্তর আপডেট করব। ধন্যবাদ
মিজো গেমস

-3

আপনার পিএইচপি পৃষ্ঠাতে এটি রাখুন।

ini_set("error_reporting", E_ALL & ~E_DEPRECATED); 

নোট করুন যে পিএইচপি 7+ এর সাথে এটি আর কাজ করবে না (এভাবে আমার ডাউনভোট); এটি কোনও 'সমাধান' নয় ...
গুইনেথ ল্লেওলিন

-5

@আমার জন্য একটি কাজ যুক্ত !

আমি পরীক্ষা দিয়েছি error_reporting(E_ALL ^ E_DEPRECATED);


4
আপনি ত্রুটিটি সমাধান করছেন না, আপনি কেবল বার্তাটি লুকিয়ে
রেখেছেন

নোট করুন যে পিএইচপি 7+ এর সাথে এটি আর কাজ করবে না (এভাবে আমার ডাউনভোট); এটি কোনও 'সমাধান' নয় ...
গুইনেথ ল্লেওলিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.