PHP &

3 Cevap php

Bir kullanıcı yeni bir kullanıcı adı hata iletisi <p>Username unavailable</p> görüntülenir ve kayıtlı ad yok girer nedense. Bazı yüzden bu hatayı düzeltmek benim kod kusur bulmanıza yardımcı olabilir merak ettim? Teşekkürler

Burada PHP kodudur.

if($_POST['username'] && trim($_POST['username'])!=='') {
    $u = "SELECT * 
          FROM users 
          WHERE username  = '$username'
          AND user_id <> '$user_id'";
    $r = mysqli_query ($mysqli, $u) or trigger_error("Query: $u\n<br />MySQL Error: " . mysqli_error($mysqli));

    if (mysqli_num_rows($r) == TRUE) {
        echo '<p>Username unavailable</p>';
        $_POST['username'] = NULL;
    } else if(isset($_POST['username']) && mysqli_num_rows($r) == 0 && strlen($_POST['username']) <= 255) { 
        $username = mysqli_real_escape_string($mysqli, $_POST['username']);
    } else if($_POST['username'] && strlen($_POST['username']) >= 256) {
        echo '<p>Username can not exceed 255 characters</p>';
    }
}

3 Cevap

Sorgu geçerli olduğundan hey, mysqli_num_rows always doğru olacaktır. Bunun yerine, yeni bir kullanıcı oluşturmak istiyorsanız elbette sıfır olmalı o döndü satır sayısını kontrol etmek zorunda. Satır sayısı 1 eşittir, bu nedenle, kontrol edin.

if (mysqli_num_rows($r) == 1) echo "<p>Username unavailable</p>"; $_POST['username'] = NULL;

Ya da bu şekilde yapmak:

if (mysql_i_num_rows($r) == 0 ) {
  // There isn't a user with this username yet, so create new user
} else {
  echo "Username not available";
}

Her zaman kullanmak yerine, bir int döndürür Neyse, çünkü kötü bir uygulama DOĞRU ile karşılaştırın bulunuyor:

mysqli_num_rows($r) > 0

Eğer $username değerlerini belirtilen ve $user_id, kod değil beri

$u = "SELECT * 
          FROM users 
          WHERE username  = '$username'
          AND user_id <> '$user_id'";

değerlendirecek

$u = "SELECT * 
              FROM users 
              WHERE username  = ''
              AND user_id <> ''";

Ben bu amacınıza sorgu olmadığını tahmin ediyorum, ve boş bir kullanıcı adı ile tüm girdileri almak olacaktır.