PHP MySQL veritabanından veri çekme nasıl yapılır?

RosLy

Centipat
Katılım
26 Şubat 2023
Mesajlar
371
Çözümler
1
Daha fazla  
Sistem Özellikleri
i5 11400H, RTX 3050Ti, 16GB DDR4 3200mHz RAM
Cinsiyet
Erkek
Meslek
Stajyer
Herkese merhaba. PHP MySQL ile bir performans ödevim var. Veritabanını bağladım fakat bir bilgi çekmek istiyorum. Şu şekilde olacak kullanıcı adı ve şifre ile giriş yapıldığı zaman bir sayfaya aktaracak ve o sayfada hoş geldin adı soyadı olsun istiyorum. Kullanıcı adı şifre ile giriş yapıp sayfaya gönderiyor. Sayfa yönlendirmesinde.

PHP:
home.php?user=$adi

Yaptım fakat sorguda.

Kod:
$yetkiliad=$con->query("select Ad from tablo1 where Kadi='".$kadi."'");

Bu şekilde olmasına rağmen sayfaya gönderdiğimde hoş geldin array yazıyor ve adres çubuğunun sonunda user = array oluyor ne yapmalıyım?

Kod:
select * from tablo1 where Kadi='".$Kadi."'

Sorgusunu yapınca sorun yaşamıyorum sadece * yerine tablodaki adını girince array diyor.
 
1711804048031.png


Tablo içeriği nedir? Ayrıca kodun tamamını paylaş. Array olarak geliyorsa dönen değer array olarak geliyor yani bir döngü şeklinde geliyor.

Bu tabloda kullanıcı adına ve şifresi aynıysa Ad Soyad tablolarını getirmek istiyorum. Fakat sadece Ad veya Ad, Soyad yazsam bile Array yazıyor sadece.
 
Kodun tamamını bi paylaş bakalım nasıl yazmışsın.
PHP:
require_once("bag.php");
if(isset($_POST["kontrol"])){
    $kadi=$_POST["username"];
    $sifre=$_POST["password"];
    $sorgu=$con->query("select * from deneme where Kadi='".$kadi."' and Sifre='".$sifre."'");
    $yetkili=$con->query("select * from deneme where Kadi='".$kadi."' and Sifre='".$sifre."' and Durum='Admin'");
    $adsoyad=$con->query("select Ad,Soyad from deneme where Kadi='".$kadi."'")->fetch(PDO::FETCH_BOTH);
    $yetkilikontrol=$yetkili->rowCount();
    $control=$sorgu->rowCount();
    if($control>0){
        echo '<div class="alert alert-success w-25 mx-auto">Giriş Başarılı! Yönlendiriliyorsunuz... </div>';
        header("Refresh:1;url=home.php?user=$adsoyad");
        }   
    else if(empty($kadi)){echo '<div class="alert alert-warning w-25 mx-auto">Kullanıcı adı alanı boş geçilemez!</div>';}
        
    else if(empty($sifre)){echo '<div class="alert alert-warning w-25 mx-auto">Şifre alanı boş geçilemez!</div>';}
    
    else{echo '<div class="alert alert-danger w-25 mx-auto">Kullanıcı adı veya şifre hatalı! </div>';}
    
    if($yetkilikontrol>0){
        header("Refresh:1;url=Admin.php?user=$adsoyad");
        }   
    }
 
PHP:
require_once("bag.php");
if(isset($_POST["kontrol"])){
    $kadi=$_POST["username"];
    $sifre=$_POST["password"];
    $sorgu=$con->query("select * from deneme where Kadi='".$kadi."' and Sifre='".$sifre."'");
    $yetkili=$con->query("select * from deneme where Kadi='".$kadi."' and Sifre='".$sifre."' and Durum='Admin'");
    $adsoyad=$con->query("select Ad,Soyad from deneme where Kadi='".$kadi."'")->fetch(PDO::FETCH_BOTH);
    $yetkilikontrol=$yetkili->rowCount();
    $control=$sorgu->rowCount();
    if($control>0){
        echo '<div class="alert alert-success w-25 mx-auto">Giriş Başarılı! Yönlendiriliyorsunuz... </div>';
        header("Refresh:1;url=home.php?user=$adsoyad");
        } 
    else if(empty($kadi)){echo '<div class="alert alert-warning w-25 mx-auto">Kullanıcı adı alanı boş geçilemez!</div>';}
      
    else if(empty($sifre)){echo '<div class="alert alert-warning w-25 mx-auto">Şifre alanı boş geçilemez!</div>';}
  
    else{echo '<div class="alert alert-danger w-25 mx-auto">Kullanıcı adı veya şifre hatalı! </div>';}
  
    if($yetkilikontrol>0){
        header("Refresh:1;url=Admin.php?user=$adsoyad");
        } 
    }
Bu şekilde yazım yanlış. Bir kere sen veri tabanından veri çekerken verinin her zaman array geleceğini unutma.

Bak şunu şöyle anlarsın:

PHP:
var_dump($adsoyad);

Bu kod ile dönen verinin array içeriğini görürsün, yani dump edersin öncelikle. Sen bunu direkt ekrana basarsan array olarak dönmesi son derece normal, çünkü verinin kendisi bir dizi.

Diğer kullanımda ise sadece RowCount yaptığın için doğru gözüküyor.

Doğru kullanımının mesela $adsoyad['Ad'] olabilir yüksek ihtimal.
 
Bu şekilde yazım yanlış. Bir kere sen veri tabanından veri çekerken verinin her zaman array geleceğini unutma.

Bak şunu şöyle anlarsın:

PHP:
var_dump($adsoyad);

Bu kod ile dönen verinin array içeriğini görürsün, sen bunu direkt ekrana basarsan array olarak dönmesi son derece normal, çünkü verinin kendisi bir dizi.

Diğer kullanımda ise sadece RowCount yaptığın için doğru gözüküyor.

Doğru kullanımının mesela $adsoyad['Ad'] olabilir yüksek ihtimal.
o zaman ben şu
PHP:
home.php
yaptığım kısıma
PHP:
?$user=$adsoyad["Ad"].$adsoyad["Soyad"]
yapsam düzelir mi?
 
o zaman ben şu
PHP:
home.php
yaptığım kısıma
PHP:
?$user=$adsoyad["Ad"].$adsoyad["Soyad"]
yapsam düzelir mi?
$adsoyad['Soyad'] çalışmaz bunun için sorgunda da Select Ad, Soyad olmalı. Veya direkt * koyacaksın tümünü kapsayacak.
 
PHP:
$yetkiliad=$con->query("select Ad from tablo1 where Kadi='".$kadi."'");

Bu yazım hackerlar tarafından sizi üzebilir. Pdo kullanın.
 
PHP:
$yetkiliad=$con->query("select Ad from tablo1 where Kadi='".$kadi."'");

Bu yazım hackerlar tarafından sizi üzebilir. Pdo kullanın.

Hocam zaten herhangi bir siteye yüklenmeyecek yapıp yapamadığımızı kontrol ediyorlar detaya da inmiyorlar lise son sınıf olduğu için. Zaten o kısımlara kendisi bile değinmedi diyebilirim.
 

Geri
Yukarı