Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara memeriksa apakah nama pengguna sudah ada dengan PHP/MYSQL

Referensi MYSQLI:http://php.net/manual/en/mysqli.query. php

Referensi PDO:http://php.net/manual/en/book.pdo. php

Sebagian besar programmer PHP telah menemukan cara menggunakan ekstensi MySQLi dan MySQL. Namun, PHP Data Objects (PDO) menawarkan cara untuk bekerja dengan objek dan mengambil pernyataan yang telah disiapkan yang membuat pekerjaan menjadi lebih mudah.

PDO adalah alat akses database di PHP yang memungkinkan akses seragam di beberapa database. Ini tidak mendukung sintaks khusus untuk database, tetapi memungkinkan peralihan yang relatif mulus antara platform dan database yang berbeda, yang hanya dapat dilakukan dengan mengubah string koneksi.

Di bawah ini adalah sedikit informasi tentang PDO, terutama ditujukan untuk programmer yang masih menggunakan ekstensi MySQL dan MySQLi, menguraikan keunggulan yang pertama. Berbagai aspek akan dipelajari dalam beberapa paragraf berikutnya.

  • Dukungan basis data

Ekstensi PDO memiliki kemampuan untuk mengakses database apa pun yang telah ditulis untuk driver PDO. Ada banyak driver PDO yang tersedia, beberapa di antaranya termasuk driver PDO yang dimaksudkan untuk mengakses Free TDS, Sybase, Microsoft SQL Server, IBM DB2, Firebird/Interbase 6, Oracle Call Interface dan database PostgreSQL, di antara banyak lagi.

Driver tidak tersedia secara otomatis di setiap sistem, jadi Anda harus menemukan driver yang tersedia dan menambahkan yang Anda butuhkan.

  • Penghubung basis data

Ada sintaks yang berbeda untuk membuat koneksi database yang bergantung pada database tertentu. Saat menggunakan PDO, Anda ingin memastikan bahwa operasi Anda dibungkus dalam blok coba/tangkap dan bahwa Anda menggunakan teknik pengecualian.

Dalam kasus normal, hanya satu koneksi yang perlu dibuat, dan koneksi ditutup dengan memprogram pegangan database sebagai null. Anda dapat mencari opsi dan sintaks yang lebih spesifik di berbagai situs sumber daya.

  • Penanganan kesalahan

PDO memungkinkan penggunaan pengecualian untuk penanganan kesalahan, itulah sebabnya Anda disarankan untuk membungkus PDO dalam blok coba/tangkap. Dengan cara ini, PDO dapat dipaksa masuk ke atribut mode kesalahan yang relevan untuk menghasilkan pengecualian.

Ada tiga - mode diam (default), peringatan dan pengecualian. Dua yang terakhir lebih berguna dalam pemrograman DRY. Mode kesalahan 'Peringatan' berguna untuk debugging dan mode 'pengecualian' memungkinkan penanganan kesalahan yang anggun sambil menyembunyikan data yang mungkin digunakan seseorang untuk mengeksploitasi sistem Anda.

  • Penyisipan dan Pembaruan

PDO memadatkan operasi penyisipan dan pembaruan basis data yang umum menjadi proses dua langkah sederhana:Prepare >> [Bind] >> Execute . Dengan metode ini, Anda dapat memanfaatkan sepenuhnya pernyataan yang disiapkan PDO, yang menawarkan perlindungan terhadap serangan berbahaya melalui injeksi SQL.

Pernyataan yang disiapkan adalah pernyataan SQL yang telah dipenuhi sebelumnya yang dapat dieksekusi beberapa kali dengan mengirimkan data ini ke server. Mereka menguntungkan karena data yang digunakan dalam placeholder secara otomatis dilindungi dari serangan injeksi SQL.

Kode PDO untuk memeriksa apakah kolom nama pengguna dan sandi ada di DB:

 <?php
//Connections
try {
    $handler = new PDO('mysql:host=localhost;dbname=s','root', '*');
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
    exit($e->getMessage());
}

$name = $_POST['name']; 
$username = $_POST['username']; 
$email = $_POST['email'];   
$password = $_POST['password']; 
$password1 = $_POST['passwordconf'];
$ip = $_SERVER['REMOTE_ADDR'];


//Verifcation 
if (empty($name) || empty($username) || empty($email) || empty($password) || empty($password1)){
    $error = "Complete all fields";
}

// Password match
if ($password != $password1){
    $error = "Passwords do not match";
}

// Email validation

if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
    $error = "Enter a Valid email";
}

// Password length
if (strlen($password) <= 6){
    $error = "Choose a password longer then 6 character";
}

if(!isset($error)){
//no error
$sthandler = $handler->prepare("SELECT username FROM users WHERE username = :name");
$sthandler->bindParam(':name', $username);
$sthandler->execute();

if($sthandler->rowCount() > 0){
    echo "User Already Exists.";
} else {
    //Securly insert into database
    $sql = 'INSERT INTO users (name ,username, email, password, ip) VALUES (:name,:username,:email,:password,:ip)';    
    $query = $handler->prepare($sql);

    $query->execute(array(

    ':name' => $name,
    ':username' => $username,
    ':email' => $email,
    ':password' => $password,
    ':ip' => $ip

    ));
    }
}else{
    echo "error occured: ".$error;
    exit();
}

Semoga referensi ini bermanfaat bagi Anda untuk mengembangkan kode-kode di proyek masa depan sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat menyimpan karakter UTF8 di MySQL

  2. Hitung kemunculan nilai DISTINCT

  3. Temukan kecocokan terdekat untuk nama kota yang salah eja?

  4. Kunci Asing Beberapa Kolom:Setel satu kolom ke Null ON DELETE alih-alih semua

  5. DATEDIFF() atau BETWEEN untuk Rentang Tanggal dalam Kueri SQL