PHP - mysqli kullanarak tek bir sonuç alın

2 Cevap php

Ve bu hicup çalıştırmak - Ben bir proje ile kısmen yol MySQLi için mysql değiştirmek descided var.

What is the best way to achieve this: //check if username is taken $result = mysql_result(mysql_query("SELECT COUNT(*) FROM user WHERE username='".$username."'"));

Ben mysql_result tam bir sürümünü bulamıyor

Ben denedim:

$ Result = mysqli_num_rows ($ db-> query ("username = kullanıcı SELECT * FROM '". $ Username. "'"))

Hangi çalışır ama sayısı mySQL sunucusu üzerinde daha kolay olacağını kullanarak düşünüyorum. Daha iyi bir yolu var mı?

2 Cevap

Eğer kullanıcı adı zaten var olup olmadığını belirlemek için çalışıyoruz simplying iseniz ben size "SELECT 1 FROM user WHERE username = '" . $username . "'" için sorguyu değiştirin önerebiliriz:

$res = $db->query("SELECT 1 FROM user WHERE username='".$username."'");
if (mysqli_num_rows($res) > 0) {
    die('username already taken');
}

Bu önce SQL enjeksiyon saldırıları için geniş kendinizi açık bırakarak gibi veritabanı sorgulama için her türlü kullanıcı girişi kaçmak için de iyi bir uygulamadır. İşte güvenli sürümü:

$res = $db->query("SELECT 1 FROM user WHERE username='". mysqli_real_escape_string($username) ."'");
if (mysqli_num_rows($res) > 0) {
    die('username already taken');
}

Eğer username sütun başvuruyorsa ve tüm hazırsınız user tablo üzerinde bir dizin olduğundan emin olun. Yazdığınız kod çalışacaktır.

username benzersiz olması gerekiyordu gibi count() hiçbir fark yaratacak kullanma. Eğer dizin UNIQUE türü de emin olun, benzersiz kullanıcı adlarının enforcing olacaktır.