PHP ve MySQL SELECT sorun

3 Cevap php

Bir name zaten login kullanıcı veritabanında saklanır olmadığını kontrol etmek için çalışıyor. name kullanıcı tarafından girilen dinamik diziler bir dizi kullanıcı tarafından eklenen dinamik form alanları bir dizi attı olduğunu. Bazı nasıl denetleneceği ve adı zaten oturum açma kullanıcı tarafından girilen olmadığını görmek bana gösterebilir misin? Kodumu doğru olamaz biliyorum. Teşekkürler!

MySQL kodu.

SELECT * 
FROM names 
WHERE name = '" . $_POST['name'] . "' 
AND userID = '$userID'

Burada MySQL tablodur.

CREATE TABLE names (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
userID INT NOT NULL,
name VARCHAR(255) NOT NULL,
meaning VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

3 Cevap

$ _POST ['Isim'] aslında dizelerden oluşan bir dizi Eğer dediğiniz gibi, o zaman bu PHP deneyin:

$namesString = '';
foreach ($i=0; $i < count($_POST['name']) $i++)
{
    $namesString .= "'" . mysql_real_escape_string($_POST['name'][$i]) . "'";
    if(isset($_POST['name'][$i + 1]) $nameString .= ', ';
}

Bu sorgu ile:

 SELECT * FROM `names` 
 WHERE `name` IN ( $namesString )
    AND `userID` = '$userID'

Sorgu adı $ _POST ['isim'] dizi olarak aynı olduğu tüm satırları dönecektir.

UserID alan benzersiz ise, her şeyden önce, sizin masada bunun benzersiz bir dizin eklemek gerekir.

Ayrıca, dikkat SQL injection attacks!

Bu gibi bir şey kullanarak çok daha güvenlidir:

$sqlQuery = sprintf('SELECT COUNT(id) AS "found" FROM names WHERE userID = "%s"', mysql_real_escape_string($_POST['name'], $conn));

Bu SQL sorgu (0 yok ise) size eşleşen satır sayısını döndürür hangi 1 alan (bulundu) adlı ile 1 satır dönecektir. Yalnızca userID (Bunun için tüm verileri almak gerekmez) olup olmadığını kontrol etmek istiyorsanız bu mükemmel.

Dinamik bir dizi olarak, daha fazla bilgi göndermek zorunda olacak ve ben benim cevap güncelleme olacak.

Bu arada burada ne isterseniz yardımcı olabilecek bazı yararlı PHP işlevleri şunlardır:

MySQL sorguları için:

Kullanıcıların listenize için:

Eğer dediğiniz gibi belirtilen, ben kodu soran tam olarak ne yapar eminim. SEÇ gönderilen adını ve geçerli kullanıcı kimliği de cevap kayıtları döndürmek gerekir.

Bazı php kodu gerekiyorsa, burada (rafine edilmiş olmalıdır):

$result = mysql_query('YOUR SELECT HERE'); 
if (!$result) {
   die('ERROR MESSAGE');
} else {
   $row = mysql_fetch_assoc($result)); 
   // $row is an associative array whose keys are the columns of your select.
}

$ _POST Kaçmak için hatırlıyorum.