Sorunlar ekleme ve hazırlanmış deyimleri ile bir veritabanındaki tabloları güncelleştirmek olması

3 Cevap mysql

Çok PHP5 yeni ve hala bazı sorunları var. Ben aşağıdaki gibidir şimdi benim kodu güncellemek / eklemek için çalışıyor hazırlanıp seçin nasıl anladım

function input_lab_results($name, $image, $descrip) {
    $query = "INSERT INTO pat_table (pat_name, pat_image, pat_descrip, pat_doctor, pat_resident, pat_create, pat_modify) VALUES (?, ?, ?, ?, ?, ?, ?)";

    if($stmt = $this->conn->prepare($query)){
        $stmt->bind_param('sssiidd', $name, $image, $descrip, 0, 0, date("Ymd"), date("Ymd"));
        $stmt->execute();
        die();
    } else{
        die($this->conn->error);
    }
}

Ben alıyorum hata

Ölümcül hata: on line 43 referans html / sınıfları / mysql.php parametresini 4 geçmek olamaz

Herhangi bir yardım / referanslar mutluluk duyacağız. Teşekkür ederim.


Eğer siz herhangi bir iyi öğreticiler veya bu örnekleri lütfen var Herkes, PDO kullanarak söz edilir?

3 Cevap

Ben bunu değiştirdi

function input_lab_results($name, $image, $descrip) {
    $query = "INSERT INTO pat_table (pat_name, pat_image, pat_descrip, pat_doctor, pat_resident, pat_create, pat_modify) VALUES (?, ?, ?, 0, 0, ?, ?)";

    if($stmt = $this->conn->prepare($query)){
        $stmt->bind_param('sssdd', $name, $image, $descrip, date("Ymd"), date("Ymd"));
        $stmt->execute();
        die();
    } else{
        die($this->conn->error);
    }
}

O okuyordu temelde nerede ben değişti? sorguda 0 tamsayı için ben bağlamak vermedi.

o $descrip bu sorun değil; Bu 0s (parametreler 4 & 5) bulunuyor. çözüm yerine tamsayılar daha değişkenler geçmek için:

 `$query = "INSERT INTO pat_table (pat_name, pat_image, pat_descrip, pat_doctor, pat_resident, pat_create, pat_modify) VALUES (?, ?, ?, ?, ?, ?, ?)";`

    $pat_doctor = 0;
    $pat_resident = 0;

    if($stmt = $this->conn->prepare($query)){
            $stmt->bind_param('sssiidd', $name, $image, $descrip, $pat_doctor, $pat_resident, date("Ymd"), date("Ymd"));`

onlar yerine kendi değerlerini kopyalama daha hafızada saklanan nereye bakar bu besbelli mysqli_bind_param referans olarak argümanları istiyor. Eğer öyle ki görüntü olarak sql deyimi, bağlamak istediğiniz bazı şeyleri, muhtemelen oldukça fazla kopyaları koşturup olmazdı ki yeterince büyük olduğu gibi, bu mantıklı. Aksi değişmezleri, dize veya referans yoluyla erişilebilir değil. bkz: http://us.php.net/references

i gereksiz yere kodunuzu karıştırır gibi sert, sql deyimi içine 0s kodlama önermiyoruz.

Bana arada, PDO önerdiğimiz. kendi sözdizimi çok Saner olduğunu.