php formu ile mysql db güncellemek

4 Cevap php

Ben bu hatayı alıyorum,

Eğer SQL sözdizimi bir hata var; line 1 yakınlarındaki 'adresi =' xxxxx ', şehir =' sssssssss ', pinkodu = '333333333', devlet = 'Assam' sayısı 'kullanmak doğru sözdizimi için MySQL sunucu sürümü karşılık kılavuzunu kontrol

Şimdiden teşekkürler.

http://dpaste.com/hold/181959/

4 Cevap

Lütfen WHERE yan tümcesi yanlış, sen WHERE a=1, b=2, c=3 İstediğiniz yazmıyorsun WHERE a=1 AND b=2 AND c=3

ayrıca mantık kusurludur, çünkü sizin fıkra genellikle daha gibi bir şey olurdu WHERE WHERE id = x (Eğer satır veri bu güncelleme olduğunuz zaten bu kadar aynı olan bir tabloda, bir satır güncelliyoruz anda için - herhangi bir mantıklı :))

ayrıca, düzgün sql dizeleri kaçmak öğrenmek veya sql injection savunmasız kendinizi bırakın

Yanı sıra Oedo ile açıklanabilir sorun olarak, aynı zamanda ciddi bir SQL enjeksiyon sorunları var. Sen not htmlspecialchars'ın, mysql_real_escape_string, bir SQL deyimi içine yerleştirilmesi için dizeleri kodlamak için kullanmak gerekir. Ya parameterised sorguları kullanın.

htmlspecialchars() sadece bir HTML sayfası içine bu çıkışı önce HTML kodlama metin içindir. HTML-kodlamak gerekir depolama dizeleri veritabanında.

Öncelikle, kullanıcıları için benzersiz bir tanımlayıcı çeşit yok? Belki bir tür müşteri kimliği? Eğer SQL daha net yapmak için WHERE yan tümcesinde müşteri tanımlamak için bu kullanabilirsiniz.

İkincisi, bu veritabanında TAM gibi kullanıcı tüm şirket yazmak için o bekliyorsunuz? Bu sizin mevcut tasarımı ile onlardan ne beklediğinizi Çünkü.

Sen bir kimlik değil, alan değerleri kullanarak kaydı tanımlamak gerekir. Eğer web sitelerinin bir çok bakarsanız, genellikle bir kaydı tanımlamak için kimliğini gönderin. Edit.php? Id = 1284 veya view.php? Id = 1284, vs gibi

Kısacası sen bu kayıt ID veritabanında değerleri ile doldurmak bir form olacaktır. Eğer düzenlemek, gibi bir düzenleme sorgu yazmak:

$UpdateQuery = "UPDATE customer SET name = '" . $name . "', address = '" . $address . "' ....... WHERE id = " . intval($_GET['id']);

Sadece sayısal değerler geçmesine izin verir, çünkü ben intval eklemek nedenidir. Bobince tarafından mentoined gibi, SQL enjeksiyon için dikkat ve mysql_real_escape_string çok sorguda girin dize tüm değerleri geçmesine izin verin.