-
Üyelik
30.08.2016
-
Yaş/Cinsiyet
48 / E
-
Meslek
Muhasebe
-
Konum
İstanbul Anadolu
-
Ad Soyad
Y** C**
-
Mesajlar
136
-
Beğeniler
17 / 16
-
Ticaret
0, (%0)
Otp authentication yöntemi ile kullanıcı kaydetmeyi amaçlayan bir scriptte şöyle bir sorgu yapılmış , ve anlamaya çalışıyorum ancak biraz yardıma ihtiyacım var
$user_activation_code = md5(rand());
$user_otp = rand(100000, 999999);
$data = array(
':user_name' => $user_name,
':user_email' => $user_email,
':user_password' => $user_password,
':user_activation_code' => $user_activation_code,
':user_email_status'=> 'not verified',
':user_otp' => $user_otp
);
$query = "
INSERT INTO register_user
(user_name, user_email, user_password, user_activation_code, user_email_status, user_otp)
SELECT * FROM (SELECT :user_name, :user_email, :user_password, :user_activation_code, :user_email_status, :user_otp) AS tmp
WHERE NOT EXISTS (
SELECT user_email FROM register_user WHERE user_email = :user_email
) LIMIT 1
";
$statement = $connect->prepare($query);
$statement->execute($data);
aslında bir çok yeri gayet açık ancak sorgu kafamı karıştırıyor böyle bir yapı ile ilk defa karşılaşıyorum
şu aşşağıdaki kısımda ne yapılmak isteniyor yada daha basit bi veya anlaşılabilir yazım şekli mevcutmudur ?
$query = "
INSERT INTO register_user
(user_name, user_email, user_password, user_activation_code, user_email_status, user_otp)
SELECT * FROM (SELECT :user_name, :user_email, :user_password, :user_activation_code, :user_email_status, :user_otp) AS tmp
WHERE NOT EXISTS (
SELECT user_email FROM register_user WHERE user_email = :user_email
) LIMIT 1
";
-
Üyelik
09.04.2015
-
Yaş/Cinsiyet
41 / E
-
Meslek
Bilgisayar Teknik Servis
-
Konum
İstanbul Avrupa
-
Ad Soyad
B** Y**
-
Mesajlar
394
-
Beğeniler
207 / 132
-
Ticaret
5, (%100)
Veritabanını yedek alıp deneyin denemekten korkmayın :)
o kod $data dizininden gelen veriyi register_user içine ekliyor.
$data da ekli olan dizi elemanlarından istemediklerinizi sağındaki değişkenlerle beraber silin ve daha sonra
$query içindende aynı elemanları silin.
Ama hepsi lazımsa orasını bilemem :)
-
Üyelik
30.08.2016
-
Yaş/Cinsiyet
48 / E
-
Meslek
Muhasebe
-
Konum
İstanbul Anadolu
-
Ad Soyad
Y** C**
-
Mesajlar
136
-
Beğeniler
17 / 16
-
Ticaret
0, (%0)
Yanıt için Çok teşekkür ederim .
$data değişkeni ile $statement->execute($data); arasındaki ilişkiyi biliyorum. sorularımı biraz daha açıklayayım
$query şeklinde tek sorgum var ve içinde
INSERT INTO register_user (tüm alanlar)konmuş ve " ; " yada " , " sonlandırımadan
alt satırda
SELECT * FROM (SELECT :tüm anahtarlar ) diyerek insertten sonra selecte geçilmiş ve bu satırın sonunda " AS tmp" şeklind ebi ifade var nedir ne iş yapar neden orda ?
ve son olarak WHERE NOT EXISTS kısmı varki bunuda pek anladığım söylenemez
kısaca konu array içindeki değerlerin execute edilmesi değil o kısım basit
tiwaly
NodeJS / PHP / NoSQL
Kullanıcı
-
Üyelik
10.10.2013
-
Yaş/Cinsiyet
34 / E
-
Meslek
Yazılımcı
-
Konum
İzmir
-
Ad Soyad
i** A**
-
Mesajlar
363
-
Beğeniler
135 / 104
-
Ticaret
7, (%100)
yeni user yaratırken önce aynı mailde bir user var mı diye kontrol etmiş sadece.