PDO global, prepare ve query hatası |
20 Mesajlar | 3.189 Okunma |
//Sorguyu değişkenlerden çekmek yerine el ile yazın.
$ilancek = $db->prepare('SELECT * FROM user LIMIT :limit,:sayfa');
$ilancek->bindValue(':limit', $limit, PDO::PARAM_INT);
$ilancek->bindValue(':sayfa', $sayfada, PDO::PARAM_INT);
$ilancek->execute();
while($ilan=$ilancek->fetchAll(PDO::FETCH_ASSOC)){
$isim = trim(htmlentities($_POST['isim'])); //Post verisi içerisindeki HTML kodlarını trimledik.
$soyisim = trim(htmlentities($_POST['soyisim'])); //Aynı işlem
//Sütunları ve vereceğimiz değerleri parantez içerisinde belirttik.
//Dışarıdan gelecek değerlerin başlarına ':' koyarak hazırladık, execute öncesinde array ile bunlara değer atayacağız.
$post = $db->prepare('UPDATE user set (isim, soyisim) VALUES (:isim, :soyisim)');
$post->bindValue(':isim', $isim, PDO::PARAM_STR, 255); //String veri tipi olduğunu belirttik ve tek seferde maksimum 255 karakter kabul ediyoruz, sonuçta bu bir isim.
$post->bindValue(':soyisim', $soyisim, PDO::PARAM_STR, 255); //Aynı işlem
$post->execute(); //Execute ettik (Gönderdik)
$id = trim(htmlentities($_POST['soyisim']));
$post = $db->prepare('DELETE FROM user WHERE id=:id');
$post->bindValue(':id', $id, PDO::PARAM_INT); //Burada integer(INT) türünde veri işleyeceğiz.
$post->execute();
$sorgu= $db->prepare('DELETE FROM user WHERE id=:id');
$sonuc = $sorgu->execute(array(
':id' => $id
));
Konuyu Hortlatmış oluyorum Sanırım Ama benimde şöyle bir sorum olacak
query yerine prepare kullanmak istiyorum fonksiyon kodumdan query kaldırım prepare yapınca verileri okumuyor
bunu yapma sebebim php 5.6 dan php 7.1 geçince sitede bazı hatalar çıkıyor
function dbquery( $sorgu ) {
global $db;
$query = $db->query($sorgu)->fetch(PDO::FETCH_ASSOC);
$result = array();
if ( is_array($query) ) {
$result = $query;
}
return $result;
}
Konuyu Hortlatmış oluyorum Sanırım Ama benimde şöyle bir sorum olacak
query yerine prepare kullanmak istiyorum fonksiyon kodumdan query kaldırım prepare yapınca verileri okumuyor
bunu yapma sebebim php 5.6 dan php 7.1 geçince sitede bazı hatalar çıkıyorfunction dbquery( $sorgu ) { global $db; $query = $db->query($sorgu)->fetch(PDO::FETCH_ASSOC); $result = array(); if ( is_array($query) ) { $result = $query; } return $result; }
query yerine prepare kullanacaksanız fonksiyonu da değiştirmeniz gerekiyor. Çünkü prepare ile güvenli işlem için direk sorgu kodu almanız uygun değil. Şu şekilde güncelleyebilirsiniz.
function dbquery( $sorgu, $execute ) {
global $db;
$query = $db->prepare($sorgu)->execute(array($execute))->fetch(PDO::FETCH_ASSOC);
$result = array();
if ( is_array($query) ) {
$result = $query;
}
return $result;
}
query yerine prepare kullanacaksanız fonksiyonu da değiştirmeniz gerekiyor. Çünkü prepare ile güvenli işlem için direk sorgu kodu almanız uygun değil. Şu şekilde güncelleyebilirsiniz.
function dbquery( $sorgu, $execute ) { global $db; $query = $db->prepare($sorgu)->execute(array($execute))->fetch(PDO::FETCH_ASSOC); $result = array(); if ( is_array($query) ) { $result = $query; } return $result; }
teşekkürler
dediğini denedim ama hata aldım
Fatal error: Uncaught ArgumentCountError: Too few arguments to function dbquery(), 1 passed in C:\Ampps\www\admin\settings.php on line 57 and exactly 2 expected in C:\Ampps\www\eticaret\teknomarketin\admin\functions.php on line 293 ( ! ) ArgumentCountError: Too few arguments to function dbquery(), 1 passed in C:\Ampps\www\admin\settings.php on line 57 and exactly 2 expected in C:\Ampps\www\admin\functions.php on line 293settings.php 57 satır
$settings = dbquery("SELECT * FROM settings");
functions.php 293 Satır
293 function dbquery( $sorgu, $execute ) {
294 global $db;
295 $query = $db->prepare($sorgu)->execute(array($execute))->fetch(PDO::FETCH_ASSOC);
$result = array();
if ( is_array($query) ) {
$result = $query;
}
return $result;
}
dediğini denedim ama hata aldım
Fatal error: Uncaught ArgumentCountError: Too few arguments to function dbquery(), 1 passed in C:\Ampps\www\admin\settings.php on line 57 and exactly 2 expected in C:\Ampps\www\eticaret\teknomarketin\admin\functions.php on line 293 ( ! ) ArgumentCountError: Too few arguments to function dbquery(), 1 passed in C:\Ampps\www\admin\settings.php on line 57 and exactly 2 expected in C:\Ampps\www\admin\functions.php on line 293settings.php 57 satır
$settings = dbquery("SELECT * FROM settings");
functions.php 293 Satır
293 function dbquery( $sorgu, $execute ) { 294 global $db; 295 $query = $db->prepare($sorgu)->execute(array($execute))->fetch(PDO::FETCH_ASSOC); $result = array(); if ( is_array($query) ) { $result = $query; } return $result; }
execute göndermediğiniz için fonksiyonda bir değer eksik hatası vermiş. Fonksiyonu şekilde güncelleyip bi dener misin?
function dbquery( $sorgu, $execute="" ) {
global $db;
$query = $db->prepare($sorgu);
if($execute=="") {
$query->execute($execute);
}else {
$query->execute(array($execute));
}
$query->fetch(PDO::FETCH_ASSOC);
$result = array();
if ( is_array($query) ) {
$result = $query;
}
return $result;
}