PDO Ekle Yardım

2 Cevap php

Ben PDO ile sqlite3 veritabanına ekleme biraz sorun yaşıyorum. PDO ile benim cehalet mazeret gerekir, bu Python'un veritabanı arayüzü geliyor nedenle yabancı görünüyor.

Yani burada benim sorunum. Ben basit bir ekleme var:

$dbh = new PDO('sqlite:vets.db');
    $count = $dbh->exec("INSERT INTO vets(name,email,clinic,streetname,citystatezip,link,phone,fax,animal,region,visible) VALUES ($name,$email,$clinic,$streetname,$citystatezip,$link,$phone,$fax,$animal,$region,$visible)");
    $dbh = null;

Ben sadece benim veritabanı üzerinde SQL komutu çalıştırmak için ve onunla yapılabilir istiyorum. Bu komut yürütülürken hiçbir hata neden olmasına rağmen, bu veritabanını günceller asla. Ben bile 777 yapılmış, veritabanının kendisi izinleri her türlü denedim ama bir fark yapmaz.

Birisi bana yardımcı olabilir mi?

2 Cevap

PDO büyük faydalarından biri hazırlanmış deyimleri oluşturabilirsiniz olmasıdır. Burada benim bir PHP projesi bazı kod:

$qry = $db->prepare(
    'INSERT INTO twocents (path, name, message) VALUES (?, ?, ?)');
$qry->execute(array($path, $name, $message));

Gördüğünüz gibi, ben bir değer eklemek istediğiniz yere ?, sonra soru işaretleri yerine konmalıdır değerler dizisi ile sorguyu yürütmek kullanın.

Bunu yaparsanız, sorgu çok daha güvenli olacak ve çalışma olasılığı daha yüksektir (yapmanız gibi, doğrudan sorguda değişkenleri eklerseniz bir eksik değer çalışma adresinin sorgusu durdurmak olacaktır beri.)

Eğer SQL sorgusu bir hata olabilir. Bunu baskı ve sonra SQLite Database Browser gibi bazı SQLite GUI arabiriminde çalıştırmak için deneyebilirsiniz.

// you can skip PDO part for now, because we know it doesn't work
// $dbh = new PDO('sqlite:vets.db');
$query = "INSERT INTO vets(name,email,clinic,streetname,citystatezip,link,phone,fax,animal,region,visible) VALUES ($name,$email,$clinic,$streetname,$citystatezip,$link,$phone,$fax,$animal,$region,$visible)";
echo $query;
// $count = $dbh->exec($query);
// $dbh = null;

Herhalde bu sorunun kaynağıdır, tırnak içinde değerleri sarma olmadığını görüyoruz. Belki bazı masa alan adları yazım hataları gibi. Aslında sorguyu görünce tüm çıkacaktır.