PHP veritabanına veri kaydedilmiyor

Katılım
8 Nisan 2020
Mesajlar
7.700
Makaleler
7
Çözümler
93
Merhabalar. PHP ile bir giriş sistemi yaptım ancak veritabanına veriyi kaydettiremiyorum. Kod şu şekilde:

PHP:
// Username ve Password tanımı
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);


// Veritabanına yüklemeye çalıştığım kısım
$sql_insert  = "INSERT INTO users(`username`,`password`,`pre`,`bakiye`,`uyelik`,`gi`,`ai`) values ($username,$password,'0','5.00','Baslangic','50','300')";
$stmt_insert = $con->prepare($sql_insert) or die ($con->error);
$stmt_insert->bind_param('ss',$username,$password);
$stmt_insert->execute();
$stmt_insert->close();

Niye olabilir?
 
Kodunda hatalar var. Bu şekilde dene;

PHP:
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$sql  = "INSERT INTO users (`username`,`password`,`pre`,`bakiye`,`uyelik`,`gi`,`ai`) VALUES (?,?,0,5,'Baslangic',50,300)";
$stmt = $con->prepare($sql);
$stmt->execute([$username, $password]);

$con = null;
 
Hata kodu veriyor mu? Veriyorsa ne yazıyor?
 
Ek olarak MySQL 8 kullanıyorsan bu tarz stabilizasyon hataları olabiliyor.
Hocam attığınız kodu kullandım ve tekrar aynısı oldu. Veritabanına kaydetmedi, kaydetmediği için de giriş yaparken "kullanıcı bulunamadı" diyor.

Hocalarım sanırım benim "registerForm.php" dosyamda, veya kayıt ekranımda bir problem var. Çünkü parola 5 haneden küçükse hata vermesi gerekiyor, onu da vermiyor. "registerForm.php" kodumu şöyle bırakıyorum:

PHP:
<?php

// Veritabanı bağlanma
include_once '../includes/baglan.php';

$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$sql = "SELECT username FROM users WHERE username = ?";
$stmt = $con->prepare($sql) or die ($con->error);
$stmt->bind_param('s',$username);
$stmt->execute();
$result = $stmt->get_result();
$count = $result->num_rows;

if($count > 0) {
    exit('error1');
}

if(strlen($_POST['password']) < 5) {
    exit('error2');
}

if($_POST['password'] != $_POST['confirmPassword']) {
    exit('error3');
}

$sql  = "INSERT INTO users (`username`,`password`,`pre`,`bakiye`,`uyelik`,`gi`,`ai`) VALUES (?,?,0,5,'Baslangic',50,300)";
$stmt = $con->prepare($sql);
$stmt->execute([$username, $password]);

$con = null;

?>
 
Son düzenleme:
@Webcam kullanan insan bunu da şu şekilde düzelt. PDO mantığını bilmiyorsun gibi. Temellere bir bakmanı öneririm.

PHP:
<?php

// Veritabanı bağlanma
include_once '../includes/baglan.php';

$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$stmt = $con->prepare("SELECT username FROM users WHERE username=?");
$stmt->execute($username);
$result = $stmt->fetchAll();

if(count($result) != 0) {
    exit('error1');
}

if(strlen($_POST['password']) < 5) {
    exit('error2');
}

if($_POST['password'] != $_POST['confirmPassword']) {
    exit('error3');
}

$sql  = "INSERT INTO users (`username`,`password`,`pre`,`bakiye`,`uyelik`,`gi`,`ai`) VALUES (?,?,0,5,'Baslangic',50,300)";
$stmt = $con->prepare($sql);
$stmt->execute([$username, $password]);

$con = null;
 
Yok hocam, bu da çözmedi. Bu hataları kendim çözebilmem için MySQL öğrensem, işe yarar mı? Giriş sistemini kendim yazmamıştım.
 
@Webcam kullanan insan tüm dosyaları sıkıştırıp atar mısın? Bir inceleyeyim.
Eve gidince register ve register-form'u atacağım. Ne yazık ki tüm dosyaları sıkıştırmam pek mümkün değil gibi, ama deneyeceğim. Basit bir giriş sistemi yapmaya çalışmıştım ama olmadı, eve gidince bilgilendireceğim.
@Berkay Davas hocam dosyaları size burdan değil de, başka bir yerden atma şansım var mı?
@Berkay Davas hocam dosyaları size burdan değil de, başka bir yerden atma şansım var mı? Daha demin mesajı önce çıkartmayı unutmuşum, o yüzden sanırım mesajım size iletilmedi.
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…