lostyazilim
tr.link

PDO Aynı Sorgu Üzerinde İşlem Yapma

10 Mesajlar 1.019 Okunma
lstbozum
tr.link

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)
Herkese merhabalar,

PDO ile ilgili bir sorum olacaktı;

Elimde şöyle bir kod var,

if(!@$_SESSION["acces"]) {
if(isset($_COOKIE["token"])) {
$token = $_COOKIE["token"];
$controlToken = $connect->query("SELECT * FROM users WHERE sessionToken='$token'");
$controlTokenRegistered = $controlToken->fetchColumn();
if ($controlTokenRegistered > 0) {
$userInfos = $connect->query("SELECT * FROM users WHERE sessionToken='$token'")->fetch();
$_SESSION["acces"] = TRUE;
$_SESSION["username"] = $userInfos["username"];
$_SESSION["id"] = $userInfos["id"];
setcookie("token","$token", time()-3600);
setcookie("token","$token", time()+60*60*24*7);
} else {
session_destroy();
session_start();
}
}
}


Bu kodla ilgili sorunum şu: $userInfos isimli değişkende $controlToken'da yer alan sorguyu tekrar çalıştırmam gerekiyor. Ancak $userInfos = $controlToken->fetch(); yaptığım takdirde $userInfos çalışmıyor. Yani aşağıda $userInfos["id"] şeklinde ID değerini alamıyorum. Ancak bir hata da vermiyor. ID değerini alabilmek için sorguyu yeniden yazmam gerekiyor. Sorgu 2. kez neden çalışmıyor?
 

 

wmaraci
reklam

ismail03 ismail03 WM Aracı Kullanıcı
  • Üyelik 28.11.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Ameliyathane Hemşiresi
  • Konum Afyon
  • Ad Soyad I** Ç**
  • Mesajlar 2633
  • Beğeniler 344 / 487
  • Ticaret 12, (%100)
1. Hata öngörüm

$controlTokenRegistered = $controlToken->fetchColumn();

değiştir

$controlTokenRegistered = $controlToken->rowCount();

veya sql sorgusunu Try catch ile yap
 

 

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)

ismail03 adlı üyeden alıntı

1. Hata öngörüm

$controlTokenRegistered = $controlToken->fetchColumn();

değiştir

$controlTokenRegistered = $controlToken->rowCount();

veya sql sorgusunu Try catch ile yap


try catch'i hata yakalamak için kullanmıyor muyuz? Bağlantımı onunla yapıyorum ancak sorguda nasıl kullanacağım?
 

 

ismail03 ismail03 WM Aracı Kullanıcı
  • Üyelik 28.11.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Ameliyathane Hemşiresi
  • Konum Afyon
  • Ad Soyad I** Ç**
  • Mesajlar 2633
  • Beğeniler 344 / 487
  • Ticaret 12, (%100)

brown adlı üyeden alıntı

try catch'i hata yakalamak için kullanmıyor muyuz? Bağlantımı onunla yapıyorum ancak sorguda nasıl kullanacağım?


Tamam siz hatanın ne olduğunu öğrenmek istemiyor musunuz

try
{$sql="select * from Eleman where ad='ali' order by sira desc ";
$sor=$db->query($sql);
$say=$sor->rowCount();
}
catch(PDOException $h)
{
echo "Hata ".$h->getMessage();
}

Hata kontrolü için ayrı bi sayfada sorgunu dene değişkenden gelen değeri ekrana bas PDO kısmında sırun yoksa işlemde hata ara
 

 

wmaraci
wmaraci

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)

ismail03 adlı üyeden alıntı

Tamam siz hatanın ne olduğunu öğrenmek istemiyor musunuz

try
{$sql="select * from Eleman where ad='ali' order by sira desc ";
$sor=$db->query($sql);
$say=$sor->rowCount();
}
catch(PDOException $h)
{
echo "Hata ".$h->getMessage();
}


Aslında diğer konuya yazdığınız şekilde sorunu çözdüm. fetchColumn()'u rowCount() yapınca 2 sorgum da çalışmaya başladı. Ama ilk sorgu fetchColumn()'ken 2. nin niye çalışmadığını hala anlamadım. Hatanın orada olduğunu direk söylediniz, oradaki hata neydi?
 

 

ismail03 ismail03 WM Aracı Kullanıcı
  • Üyelik 28.11.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Ameliyathane Hemşiresi
  • Konum Afyon
  • Ad Soyad I** Ç**
  • Mesajlar 2633
  • Beğeniler 344 / 487
  • Ticaret 12, (%100)

brown adlı üyeden alıntı

Aslında diğer konuya yazdığınız şekilde sorunu çözdüm. fetchColumn()'u rowCount() yapınca 2 sorgum da çalışmaya başladı. Ama ilk sorgu fetchColumn()'ken 2. nin niye çalışmadığını hala anlamadım. Hatanın orada olduğunu direk söylediniz, oradaki hata neydi?


Hata Şu siz FetchColum ile Sql sorgunuza göre veritabanında etkilenen degeri alıyor ben öyle anladım ama rowCount Sql sorgusuna göre veritabanında kaç satır etkilendionu sayıyor :)
 

 

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)

ismail03 adlı üyeden alıntı

Hata Şu siz FetchColum ile Sql sorgunuza göre veritabanında etkilenen degeri alıyor ben öyle anladım ama rowCount Sql sorgusuna göre veritabanında kaç satır etkilendionu sayıyor :)


Ama sonuçta sorgu olarak baktığımızda bir hata yok.

$controlToken = $connect->query("SELECT * FROM users WHERE sessionToken='$token'");

Ben bu sorguyu 2 farklı yerde kullanmak istiyorum. Eğer ilk olarak ->fetchColumn(); yazarsam sorgu 2. kez çalışmıyor. Ancak farklı bir şey yazarsam sorguyu tekrar kullanabiliyorum.
 

 

ismail03 ismail03 WM Aracı Kullanıcı
  • Üyelik 28.11.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Ameliyathane Hemşiresi
  • Konum Afyon
  • Ad Soyad I** Ç**
  • Mesajlar 2633
  • Beğeniler 344 / 487
  • Ticaret 12, (%100)

brown adlı üyeden alıntı

Ama sonuçta sorgu olarak baktığımızda bir hata yok.

$controlToken = $connect->query("SELECT * FROM users WHERE sessionToken='$token'");

Ben bu sorguyu 2 farklı yerde kullanmak istiyorum. Eğer ilk olarak ->fetchColumn(); yazarsam sorgu 2. kez çalışmıyor. Ancak farklı bir şey yazarsam sorguyu tekrar kullanabiliyorum.


Uyarı


Veriyi almak için PDOStatement::fetchColumn() yöntemini kullanırsanız aynı satırdan artık başka bir sütun döndüremezsiniz.

Php.net :)
Daha önce hiç fetchcolum kullanmadım net bi bilgim yok
 

 

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)

ismail03 adlı üyeden alıntı

Php.net :)
Daha önce hiç fetchcolum kullanmadım net bi bilgim yok


Peki, yine de sayenizde 2 sorunum da çözüldü çok teşekkürler :)
 

 

ismail03 ismail03 WM Aracı Kullanıcı
  • Üyelik 28.11.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Ameliyathane Hemşiresi
  • Konum Afyon
  • Ad Soyad I** Ç**
  • Mesajlar 2633
  • Beğeniler 344 / 487
  • Ticaret 12, (%100)

brown adlı üyeden alıntı

Peki, yine de sayenizde 2 sorunum da çözüldü çok teşekkürler :)


ne demek :)
 

 

wmaraci
wmaraci
Konuyu toplam 3 kişi okuyor. (0 kullanıcı ve 3 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al