PHP ile MySQL sorgulama

7 Cevap php

Ne bu kod ile yanlış:

$q = query("select * from users where email = '$_POST['email']' and name = '$_POST['name']'");

Ayrıştırma hatası: T_STRING' or T_VARIABLE 'veya `T_NUM_STRING' C bekliyordum, ayrıştırma hata: \ wamp \ www \ bağlantı \ hat 16 üzerinde index.php

Şimdiden teşekkürler.

7 Cevap

 $q = query("select * from users where email = '{$_POST['email']}' and name = '{$_POST['name']'}");

You missed two quotes. Also:
1) Always escape user input (for security reasons):

$email = mysql_real_escape_string($_POST['email']);
$name = mysql_real_escape_string($_POST['name']);
$q = query("select * from users where email = '{$email}' and name = '{$name}'");

2) kod vurgulama ile bir editörü alın, böylece gelecekte benzer sorunları alamadım. Ben tavsiye Notepad++.

Ayrıştırma hatası: T_STRING 'orT_VARIABLE' veya `T_NUM_STRING 'bekliyor, ayrıştırma hata

Bu hata alışın. Her zaman tırnak sorunu var demektir.

Kullanarak w / tanıdık olsun "ve '

Eğer inline kaşlı ile vars çevreleyen gerekir.

Bu gibi:

$q = query("select * from users where email = '{$_POST['email']}' and name = '{$_POST['name']}'");
  1. You use $_POST directly in the SQL Query which is very bad.
    Use:

    $email = mysql_real_escape_string($_POST['email']);
    $name = mysql_real_escape_string($_POST['name']);
    $q = query("SELECT ... $name ... $email");

  2. Ben dize birleştirme kullanarak yerine okumak (imho) kolay gibi dizeleri değişkenleri gömme tavsiye ederim

    $ Q = query ("SELECT ..." $ isim "..." $ email...);

  3. (Eğer really, really all alanları istediğiniz sürece) SELECT * kötü

Bu deneyin:

$q = query("select * from users where email = '" . $_POST['email'] . "' and name = '" . $_POST['name'] . "'");

Çift bunu yanlış şekilde yorumlanmış olsun yapma $ _POST ['email'] etrafında ve içinde tırnak koymak alıntı kullanıyor

This would work the right way: $q = query('select * from users where email = '.$_POST['email'].' and name = '.$_POST['name']);

Ama bu doğru bir sorgu sonrası değişkenler geçmek hala yanlış işleri bile. Bir geliştirici olarak 'güveniniz asla' için öğrenmek gerekir. Bu yüzden en iyi şey, bu gibi kaçan bunu temizlemek için:

$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$q = query("select * from users where email = $email and name = $name");

ya da bu:

$q = query('select * from users where email = '.mysql_real_escape_string($email).' and name = '.mysql_real_escape_string($name));

(Ne tercih yolu)

Pease bu şekilde yapmıyoruz. Bu, SQL enjeksiyonu için mükemmel bir örnektir.

Daha iyi bir Sürüm:

$email = mysql_real_escape_string($_POST['email']);
$name = mysql_real_escape_string($_POST['name']);
$q = query("select * from users where email = '$email' and name = '$name'");