Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Dlaczego ten INSERT nie działa
Forum PHP.pl > Forum > PHP
klex234
  1. @mysql_query('INSERT INTO news (login,pass,mail) VALUES('.$login.','.$pass.','.$mail.')') or die('Nie można utworzyć konta');
Niktoś
Będziesz wiedział jak usuniesz @ ,którą masz na samym początku.
  1. mysql_query('INSERT INTO news (login,pass,mail) VALUES('.$login.','.$pass.','.$mail.')') OR die(mysql_error());
pedro84
Usuń małpkę to zobaczysz.
klex234
Jak usunę @ to jest tak samo
muniekw
Spróbuj tak:
  1. mysql_query("INSERT INTO news (login,pass,mail) VALUES(".$login.",".$pass.",".$mail.")") OR die('Nie można utworzyć konta');
klex234
Cytat(muniekw @ 2.05.2012, 15:32:45 ) *
Spróbuj tak:
  1. mysql_query("INSERT INTO news (login,pass,mail) VALUES(".$login.",".$pass.",".$mail.")") OR die('Nie można utworzyć konta');


Tak samo jest
Niktoś
Edytowałem u góry ,żeby zobaczyć błędy sql'owe użyj
mysql_error() ,bo die zwraca Ci napis.
ulek1987
$mysql= mysql_connect("localhost", "juzer", "samopas", "test");
$wpis=("INSERT INTO news (login,pass,mail) VALUES(".$login.",".$pass.",".$mail.")") ;
$ddodanie = mysql_query($mysql, $wpis)
or die(mysql_error($mysql));
klex234
"No database selected"
muniekw
Cytat(klex234 @ 2.05.2012, 15:41:14 ) *
"No database selected"

No to masz odpowiedź smile.gif
ulek1987
$mysql= mysql_connect("localhost", "juzer", "samopas", "test");
tutaj wpisujesz własne dane, kolejno : nazwahosta, nazwa uzytkonika w bazie danych, hasło do bazy, nazwa bazy.
klex234
w pliku config który dołączam mam połączenie i selectowanie
pedro84
Pokaż...
klex234
  1. <?php
  2.  
  3. define('DB_HOST','mysql.cba.pl'); // Serwer bazy danych
  4. define('DB_USER','-------'); // Nazwa użytkownika bazy danych
  5. define('DB_PASS','-------'); // Hasło do bazy danych
  6. define('DB_NAME','---------------'); // Nazwa bazy danych
  7.  
  8. $conn = @mysql_connect (DB_HOST, DB_USER, DB_PASS);
  9. mysql_select_db(DB_NAME, $conn) or die(mysql_error());
  10.  
  11. if (!$conn) {
  12. die ('<p class="error">Błąd łączenia z bazą danych</p>');
  13. }
  14.  
  15. ?>
Niktoś
A jak to includujesz ?Bo to wporządku się wydaje.
muniekw
Zawsze możesz wyświetlić sobie zapytanie: zobaczyć jakie wartości dostają się do niego i wkleić bezpośrednio do phpMyAdmina.
Zobaczysz czy zwróci Ci jakiś błąd.

A spróbuj jeszcze tak, bo wydaje mi się że problem może być przez "ciapki".
  1. mysql_query("INSERT INTO news (login,pass,mail) VALUES('".$login."','".$pass."','".$mail."')") OR die('Nie można utworzyć konta');
Niktoś
Muniekw to nie jest wina ciapek.
Raczej nie otrzymałby błędu:
"No database selected".
Sugeruje abyś przedstawił innym jak includujesz ten plik konfiguracji z bazą danych.
muniekw
Cytat(Niktoś @ 2.05.2012, 15:58:36 ) *
Muniekw to nie jest wina ciapek.
Raczej nie otrzymałby błędu:
"No database selected".


W sumie jak się zastanowić to masz rację wink.gif dobra to jak includujesz plik tongue.gif
pedro84
I usuń wszędzie te @!
klex234
  1. require('config.php');
Niktoś
No to fajnie,kurcze nie wiedziałem nigdy metody require.Chyba ten skrypt twój musi być rządowy ,jakiś top secret ,że nie chcesz nam go pokazać.Może źle używasz tej metody,ale zdaje się ,że chyba się nie dowiemy.
klex234
przecież wyświetla mi błąd nie z pliku gdzie mam ten insert tylko z pliku config.php
Niktoś
Otrzymujesz błąd z tej kwerendy
mysql_query('INSERT INTO news (login,pass,mail) VALUES('.$login.','.$pass.','.$mail.')') OR die(mysql_error());

"No database selected",gdzie kwerenda ta jest w innym pliku niż twój plik konfiguracyjnym.Więc prawdopodobnie błednie używasz metody require i nie nawiązujesz połączenia z bazą danych.Może używasz jej zbyt późno ,może w ogóle jest niewykonywana ,gdyż może znajdować się w bloku if.Ale ja tylko zgaduje.
klex234
Sprawdzałem z jakiego pliku. Do linijki z wybieraniem bazy dodałem: or die('nie można wybrać bazy') i to wyświetla
ulek1987
$add_site = true;

include "config.php";

ja robie to tak i działa zawsze
Niktoś
Sprawdź jeszcze raz dokładnie ,nawę bazy,hasło,usera.Może źle coś wpisałeś,wielkość liter także ma znaczenie.
Jeśli masz jakieś polskie znaki w tych parametrach zmień na "bez ogonków".Gdyż może być tak ,że masz błędne kodowanie.
greycoffey
Jak się @ucisza@ błędy, zamiast je pokazywać, to tak się kończy.
klex234
Coś mi się udało wykombinować. Jak próbowałem się zarejestrować(skrypt rejestracji) to wywala taki błąd:

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 '@poczta.onet.pl)' at line 1

O co chodzi?
Niktoś
Bo w tej zmiennej/stringu @poczta.onet.pl jest @,a małpa zazwyczaj w języku sql oznacza parametr ,więc musisz zmienną escapować ,używając {zmienna} lub `zmienna`.
mortus
Cytat(Niktoś @ 3.05.2012, 14:14:39 ) *
Bo w tej zmiennej/stringu @poczta.onet.pl jest @,a małpa zazwyczaj w języku sql oznacza parametr ,więc musisz zmienną escapować ,używając {zmienna} lub `zmienna`.

Niktoś nie obraź się, ale straszne głupoty piszesz. Łańcuch znaków, to zawsze łańcuch znaków i nie ma znaczenia, czy jest w nim @, czy jej nie ma. Poza tym nawiasów sześciennych, czyli {}, używamy w PHP do wstawiania zmiennej do łańcucha znaków, a gravisów, czyli `, używamy w MySQL do ograniczania nazw tabel, kolumn, aliasów, itp., ale nie do wartości, jaką bez wątpienia jest e-mail. Błąd wynika raczej z czegoś innego np. źle napisanego zapytania, ale żeby móc to "zdiagnozować" potrzebny jest aktualny kod.
Niktoś
Tak patrze na ten syntax:
syntax to use near '@poczta.onet.pl.
Przykładowo podstawiając:
  1. $zmienna="@poczta.onet.pl"; //zmienna
  2. select email from db where email=$zmienna //-podstawiona zmienna w zapytaniu

czy wtedy wygenerowane przez php zapytanie nie będzie wyglądać w mysql tak:
  1. SELECT email FROM db WHERE email=@poczta.onet.pl

Czy w ten sposób mysql nie zgłupieje -myśląc ,że zamiast wartości jest to parametr?
Niech autor tematu może poda więcej szczegółów ,bo można tylko się domyślać i snuć zwariowane teorie.
mortus
Cytat(Niktoś @ 3.05.2012, 15:48:36 ) *
Tak patrze na ten syntax:
syntax to use near '@poczta.onet.pl.
Przykładowo podstawiając:
  1. $zmienna="@poczta.onet.pl"; //zmienna
  2. select email from db where email=$zmienna //-podstawiona zmienna w zapytaniu

czy wtedy wygenerowane przez php zapytanie nie będzie wyglądać:
  1. SELECT email FROM db wher email=@poczta.onet.pl

Czy w ten sposób mysql nie zgłupieje -myśląc ,że zamiast wartości jest to poarametr?

Tyle, że adresy e-mail nie rozpoczynają się znakiem @, więc dla MySQL @poczta parametrem nie jest (gdyby był, to MySQL próbowałby podstawić odpowiednią wartość i wykrzyczał, że nie może tej wartości znaleźć). Najprawdopodobniej brakuje apostrofów, które powinny otaczać adres e-mail jako wartość tekstową. Syntax error oznacza błąd w składni zapytania, a nie próbę użycia nieistniejącego parametru. Natomiast {} i `` nijak się do tego mają.
klex234
Dziękuje za odpowiedzi. Wszystko już działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.