MySQL sözdizimi hatası;

4 Cevap php

Ben şu hata bir çözüm için tüm internet üzerinden bakarak oldum;

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'primary, username, password, password2) VALUES (null, 'hello', 'hello', 'hello')' at line 1"

Ben ne olup bittiğini hiçbir fikrim .. Benim kod yüzden burada ne olduğunu soracak biliyorum var:

$con = mysql_connect("localhost","root","*****");
    if (!$con)
      {
      die('Server overload, please try again' . mysql_error());
      }

    mysql_select_db("users", $con);

    $sql = "INSERT INTO details (primary, username, password, password2) VALUES (null, '$_POST[username]', '$_POST[password]', '$_POST[password2]')";

    if (!mysql_query($sql,$con))
      {
      die('Error: Server overload, try again' . mysql_error());
      }
    echo "You have signed up successfully!";

    mysql_close($con);

I've been trying to figure it out for around 4/5 hours now and have had no success.
Thanks,
Lawrence

4 Cevap

primary anlamına gelir, SQL, bir reserved keyword olduğunu ki sen ya:

  • Bu sütunu yeniden adlandırma - o tür od durumu önlemek için, iyi bir fikir olurdu
  • veya bu ad etrafında backticks kullanın

İşte sorgu ikinci durumda nasıl bir şey olurdu:

INSERT INTO details (`primary`, `username`, `password`, `password2`)
VALUES (null, 'hello', 'hello', 'hello')


Note : and you should escape your values, using mysql_real_escape_string, to avoid SQL Injections !

İlköğretim ayrılmış bir sözcüktür. Tablo tanımı nedir?

http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

"Birincil" MySQL ayrılmış bir kelime: Ben başka bir şey o ilk sütunu yeniden adlandırmak istiyorum

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

Birincil ve detayları gibi relitively ortak adları ile tablo veya sütun isim çalışın.

Onlar şu anda kullanmakta olduğunuz SQL lezzet kelimeleri ayrılmış olmasa da başka türlerini (vb Postgres, Oracle,) destek olabilir zaman, asla bilemezsiniz.

Ayrıca bu kullanışlı-züppe reserved word checker kullanabilirsiniz.

Followup Question:
I would like to know who wrote the error statement you are getting, which essentially says RTFM? Hilarious. I'm going to use that in my next try catch. :)