Çalışmıyor INSERT INTO tablo?

5 Cevap php

Ben nettuts bir öğretici buldum ve bunu sitemde bunu uygulama çalıştı .. Şimdi çalışıyor bunun bir kaynak kodu vardır. Ancak, bu kadar ben bir tane yapıyorum bir Kayıt sistemi yoktur. Şey bu veritabanına INSERT bilmek görünmüyor ... Benim kod çalışmıyor, beklediğim gibi, olduğunu. İşte db veri ekler fonksiyon.

function register_User($un, $email, $pwd) {
$query = "INSERT INTO users( username, password, email )
                VALUES(:uname, :pwd, :email)
                LIMIT 1";

if($stmt = $this->conn->prepare($query)) {
    $stmt->bind_param(':uname', $un);
    $stmt->bind_param(':pwd', $pwd);
    $stmt->bind_param(':email', $email);
    $stmt->execute();

    if($stmt->fetch()) {
        $stmt->close();
        return true;
    } else return "The username or email you entered is already in                      
                  use...";
}

}

Ben sınıf içinde veritabanına bağlantıyı ayıklanmış olması, o bağlı söylüyor. Bunun yerine bu yöntemi kullanarak çalıştı:

function register($un, $email, $pwd)
{
    $registerquery = $this->conn->query(
               "INSERT INTO users(uername, password, email) 
               VALUES('".$un."', '".$pwd."', '".$email."')");  
    if($registerquery)  
    {  
        echo "<h4>Success</h4>";  
    }  
    else  
    {  
        echo "<h4>Error</h4>";  
    }
}

And it echos "Error"... Can you please help me pen point the error in this??? :(

5 Cevap

Bu hat sorun olabilir gibi ilk örnekte, görünüyor:

if ($stmt->fetch()) {

Genellikle, veri işleme sorguları (INSERT, UPDATE, DELETE, vb) getirilen olabilir bir sonuç kümesi döndürmüyor. Genellikle, $stmt->execute(); function aradığınız doğru veya yanlış değerini dönecekti.

İkinci örnekte, yanlış "username" yazıldığından:

INSERT INTO users(uername, password, ...

Ben daha iyi bir dize olarak sorgu yazmak ve bir parametre olarak göndermek ... Yukarıdaki kodda hiçbir hata yoktur umarım. biraz zaman bir sorun dize birleştirme ve parametre değişkenleri meydana olabilir.

Ayrıca alan adı miss-yazıldığından olduğunu kontrol edin.

İlk örnek,

$query = "INSERT INTO users( username, password, email )
            VALUES(:uname, :pwd, :email)
            LIMIT 1";

"LIMIT 1" kaldırmak olmalıdır

$query = "INSERT INTO users( username, password, email )
            VALUES(:uname, :pwd, :email)";

"SINIR" sorgu inşasının parçası değildir. Daha fazla bilgi için INSERT USAGE DOCUMENTATION bakın.

Ikinci örneği,

Daha önce de belirttiğimiz gibi, "kullanıcı adı" alanına bir yazım var. Bunun yerine "uername" kullanılmıştır. Bu bir "Bilinmeyen sütun" hata tetikleyecektir.

Son bir not olarak, size ilk sorun hakkında ipucu bulmak nerede olduğunu neden hata mesajı okumak emin olun. Ayrıca, sorgu sadece o hataları yok emin olmak için bir veritabanı istemcisi üzerinden inşa testi deneyin.

Hi thanks to all who helped! :-) I will look into my first method and try to apply your corrections if I find time... For now I am using the second method which, apparently, I have misspelled a field.

Tekrar teşekkürler!

Bu deneyin.

mysql_query("INSERT INTO `users` (`username`,`password`,`email`) VALUES ('$user','$pass','$email')