Php Veri Ekleme Sorunsalı ?
-
Merhabalar,
ilk öncelikle herkese iyi akşamlar.
Benim mysqlde terimler diye tablom var bunda terim,anlami diye stünlarım var php PDO ile veri ekliyorum diyelim mesela eklediğim terim başlığı "A" ise veya "Abdal" gibi kısaysa veri tabanına eklemiyor hiç hatada vermiyo ama ekleme yapmıyor .
sizce bu neden olabilir ?
kaydeden kısımda
$kaydet = $dbcon->exec("INSERT INTO terimler (terim,anlami,dil,tarih,onay) VALUES ('$terim','$anlami','$dili','$tarih','$onayi')");
if($kaydet){ vs. vs. bıdı bıdı
arkinfes tarafından 21/Mar/17 19:14 tarihinde düzenlenmiştir -
Birşey farkettim daha önce terime sadece "a" yazınca eklemiyordu şimdi ekledi bazı durumlarda ekliyor bazı durumlarda eklemiyor durumu anlamadım. phpmyadmin'den rahatca ekleme yapabiliyorum ama php pdo ile bazen ekliyo bazen eklemiyor neden acaba ?
-
1. si PDO kullanıyorsan bari ya array olarak verileri gönder yada bindParam ile verileri bind et.
2. si Çok güzel INJ yersin bu şekilde.
3. sü apache error log kısmına basılır bu tür hatalar tarayıcıya değil
Tahminimce varchar kısıtlaması koydun veya UTF-8 hatası alıyorsun veya int değere null değer atamaya calısıyorsun NOT NULL COLUMN'a ..
error log u bir açıp bak hocam
-
MhmdAlmz bunu yazdı
1. si PDO kullanıyorsan bari ya array olarak verileri gönder yada bindParam ile verileri bind et.
2. si Çok güzel INJ yersin bu şekilde.
3. sü apache error log kısmına basılır bu tür hatalar tarayıcıya değil
Tahminimce varchar kısıtlaması koydun veya UTF-8 hatası alıyorsun veya int değere null değer atamaya calısıyorsun NOT NULL COLUMN'a ..
error log u bir açıp bak hocam
PDO::errorInfo(): Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'teki Marienkirche'de, 1960'lı yıllarda, her yıl Noel öncesi arka arkaya ' at line 1
hata bu hocam. bu arada ben tüm parametreleri fonksiyon ile süzüyorum yinede inj yermiyim ki ?
arkinfes tarafından 21/Mar/17 20:57 tarihinde düzenlenmiştir -
arkinfes bunu yazdıMhmdAlmz bunu yazdı
1. si PDO kullanıyorsan bari ya array olarak verileri gönder yada bindParam ile verileri bind et.
2. si Çok güzel INJ yersin bu şekilde.
3. sü apache error log kısmına basılır bu tür hatalar tarayıcıya değil
Tahminimce varchar kısıtlaması koydun veya UTF-8 hatası alıyorsun veya int değere null değer atamaya calısıyorsun NOT NULL COLUMN'a ..
error log u bir açıp bak hocam
PDO::errorInfo(): Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'teki Marienkirche'de, 1960'lı yıllarda, her yıl Noel öncesi arka arkaya ' at line 1
hata bu hocam. bu arada ben tüm parametreleri fonksiyon ile süzüyorum yinede inj yermiyim ki ?
Bir kere unutsan süzmeyi (gerçekten süzebiliyor musun tam olarak?) yersin.
Diyor ki senin ' karakterin sql cümlesini bozmuş (bozuyorsa, filteleyememişsin ve sql injection yiyebilirsin demek). Eğer parametre olarak gönderseydin bu sıkıntı olmazdı.
try { $sql = "INSERT INTO tabloadı (x, y, z) VALUES (:birinci, :ikinci, :ucuncu)"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':birinci', $birincineyseo, PDO::PARAM_STR); $stmt->bindParam(':ikinci', $ikincineyseo, PDO::PARAM_STR); $stmt->bindParam(':ucuncu', $ucuncuneyseo, PDO::PARAM_STR); $stmt->execute(); } catch(PDOException $ex) { echo 'Istisna firlatildi. Istisna: ' . $ex->getMessage(); die(); }Not: pdo nesnesini array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
parametreleri ile açman gerek ki yukarıdaki verdiğim örnek istendiği gibi çalışsın. Yani:
$pdo = new PDO(DSN, DB_USERNAME, DB_PASSWORD,array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); burada DSN, DB_USERNAME ve DB_PASSWORD'ü uygun şekilde değiştirmelisin.
YeniHarman tarafından 21/Mar/17 21:33 tarihinde düzenlenmiştir
