مقارنة بين قواعد البيانات بانظمة PDO أو MySQLi
---------------------------------------
طبعًا بعد ما قررت الPHP حذف دوال الMySQL للتعامل مع قواعد البيانات ، بقي عندنا طريقتين عشان نتعامل مع قواعد البيانات ، إما عن طريق PDO أو mysqli .
قبل انك تقرر هتتعلم انهي لازم تشوف المقارنة دي علشان تقدر تشوف انهي المناسبة ليك .
_____________________________________
اولاً : مقارنة بسيطة :
دعم قواعد البيانات :
PDO : تدعم 12 نوع مختلف.
MySQLi : تدعم الMySQL فقط .
طريقة التعامل :
PDO : كلاس الPDO
MySQLi : كلاس الMySQLi أو دوال الMySQLi
السرعة :
PDO : سريعة.
MySQLi : سريعة .
_____________________________________________
ثانيًا : مقارنة دقيقة مع امثلة :
طريقة الاتصال بقاعدة البيانات :
رمز PHP:
// PDO
$pdo = new PDO ( "mysql:host=localhost;dbname=database" , 'username' , 'password' );
// mysqli, عن طريق الدوال
$mysqli = mysqli_connect ( 'localhost' , 'username' , 'password' , 'database' );
// mysqli, عن طريق الكلاس
$mysqli = new mysqli ( 'localhost' , 'username' , 'password' , 'database' );
دعم قواعد البيانات :
الاستعلام و جلب النتائج :
رمز PHP:
$query = "SELECT * FROM users" ;
// PDO
$result = $pdo -> query ( $query );
while ( $user = $result -> fetch ( PDO :: FETCH_CLASS )) {
// echo $user->Here a column;
}
// MySQLI, عن طريق الدوال
if ( $result = mysqli_query ( $mysqli , $query )) {
while ( $user = mysqli_fetch_object ( $result , 'User' )) {
// echo $user->Here a column;
}
}
// MySQLi, عن طريق الكلاس
if ( $result = $mysqli -> query ( $query )) {
while ( $user = $result -> fetch_object ( 'User' )) {
// echo $user->Here a column;
}
}
الحماية :
رمز PHP:
// PDO, escaping
$username = PDO :: quote ( $_GET [ 'username' ]);
$pdo -> query ( "SELECT * FROM users WHERE username = $username " );
// mysqli, escaping
$username = mysqli_real_escape_string ( $_GET [ 'username' ]);
$mysqli -> query ( "SELECT * FROM users WHERE username = ' $username '" );
الPDO::quote تعمل escaping للنص و تضع علامات الاقتباس حوله ، اما mysqli_real_escape_string تستعمل للescaping فقط .
فيه طريقة تانية وهي :
رمز PHP:
// PDO
$pdo -> prepare ( 'SELECT * FROM users WHERE username = :username' );
$pdo -> execute (array( ':username' => $_GET [ 'username' ]));
// mysqli
$query = $mysqli -> prepare ( 'SELECT * FROM users WHERE username = ?' );
$query -> bind_param ( 's' , $_GET [ 'username' ]);
$query -> execute ();
في الPDO تقدر تستخدم الطريقة دي برضو :
رمز PHP:
// PDO
$pdo -> prepare ( 'SELECT * FROM users WHERE username = :username' );
$pdo -> bindValue ( ':username' , $_GET [ 'username' ], PDO :: PARAM_STR );
$pdo -> execute ();
منقول للفائدة
البحث
فنان سات , جامعة الفضائيات العربية , اكبر منتدى فضائي , اقوى سيرفر شيرنج ,كروت ستالايت , خدمات مجانية , قنوات فضائية , ترددات حديثة ,سيرفرات مجانيه.
lrhvkm fdk r,hu] hgfdhkhj fhk/lm PDO H, MySQLi hgfdhkhj fhk/lm mysqli