Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] INSERT
Forum PHP.pl > Forum > Przedszkole
PanGuzol
Witam.
Napotkałem problem z poleceniem INSERT.
Otóż niedziała mi ono. Każde zapytanie nie udaje sie, a korzystam z roota żeby niebyło że brak uprawnień.
W phpmyadminie działa mi ale w tych co tam sobie ja stworzyłem nie działa.

  1. <?php
  2. $query = "INSERT INTO produkty VALUES ( '' , '$name' , '$description' , '$price' , '$cat')";
  3. $result = $db -> query($query);
  4. ?>

tak wyglądają umnie te zapytania z tego co pisze wksiażce z której korzystam to wszystko jest ok no ale jednak nie pasuje.
Polecenie SELECT działa ale z INSERT są wałki.
Jojo
A może byś jakiś błąd pokazał?
mysql_error" title="Zobacz w manualu php" target="_manual
Cysiaczek
Czy jesteś pewien, ze inicjujesz dobrze połączenie z bazą?
PanGuzol
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in d:\Apache\Apache\htdocs\sklep\zamuwienie.php on line 45

oto treść błędu
Jojo
A przeczytałeś to co jest pod linkiem, który Ci podałem? Użyj tego i pokaż nam błąd MySQl'a.
PanGuzol
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource <-- to zwruciła funkcja mysql_error()

Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource <-- a to funkcja mysql_errno()
Jojo
Podajesz do tej funkcji zły parametr. Spróbuj ją wywołać bez parametru.
PanGuzol
Jak ją wywołuje bez parametru to nie zwraca żadnego wyniku
Jojo
W takim razie wygląda to na problem z połączeniem z bazą. Pokaż jakiś trochę większy kawałek kodu, to może coś się uda wywnioskować.

Czy ta klasa do obsługi bazy danych, którą tam używasz jest Twojego autorstwa, czy to jakiś szerzej znany system?
PanGuzol
  1. <?php
  2. function add_cat()
  3. {
  4. $name = $_POST['name'];
  5. if(!empty($name))
  6. {
  7. global $db;
  8. $query = "INSERT INTO kategorie VALUES ('' , '$name')";
  9. $result = $db -> query($query);
  10. echo mysql_errno() . ": " . mysql_error() . "n";
  11. if($result)
  12. {
  13. echo "Kategorie dodano";
  14. }
  15. else
  16. {
  17. echo "Operacja dodania kategori zakończona niepowodzeniem prosze sprobować później";
  18. }
  19. }
  20. else
  21. {
  22. echo "Formularz wypełniony nieprawidłowo";
  23. }
  24. }
  25. ?>

To jest jedno z miejsc gdzie wystepuje błąd. Wynikiem wywołania tej funkcji jest wyświetlenie napisu "Operacja dodania kategori zakończona niepowodzeniem prosze sprobować później"

Korzystam z wbudowanej klasy

  1. <?
  2. $host = 'localhost';
  3. $login = 'root';
  4. $pass = 'mojehaslo';
  5. $db_name = 'sklep';
  6. $db = new mysqli($host, $login, $pass, $db_name);
  7. $db -> autocommit(true);
  8. ?>

Tak wygląda plik config.inc.php jest on dołanczany do wszystkich plików.
Połaczenie działa bo polecenie SELECT działa, INSERT niedziała, UPDATE też nie działa
Jojo
Skoro korzystasz z obiektowej wersji mysqli, to powinieneś napisać:
  1. <?php
  2. echo $db->error;
  3. ?>
PanGuzol
Out of range value adjusted for column 'catID' at row 1

oto wynik pole catID jest z opcją auto_increment i jest kluczem podstawowymw tej tabeli
a UPDATE jednak działa ponownie cudzysłowów zapomniłem :/
Jojo
Prawdopodobnie używasz MySQL 5.x. Spróbuj nie podawać w insertach wartości dla pola z auto_increment, lub jako tą wartość wpisać null.
PanGuzol
Dzięki wielkie działa biggrin.gif

ehh już sie cieszyłem że szystko działa a tu kolejny error tym razem treść brzmi

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 'INSERET INTO zamowienia_info VALUES (NULL , '4' , 1061 , '2006-07-07')' at line 1

PS: jest jakiś poradnik gdzie jest napisane jak czytać te błędy??
Jojo
W manualu MySQL błędy są chyba opisane. Ten akurat dotyczy błędu w składni zapytania. Jest literówka INSERET zamiast INSERT.
XoX
Mam podobny problem:(
Wykonują mi się wszystkie zapytania oprocz tych z INSERT INTO dlatego podejrzewam ze to ja robie jakis blad:(
Oto fragment kodu w ktorym mam problem
  1. <?php
  2. require_once('funkcje.php');
  3.  
  4. if((!isset($_SESSION['user']))&&(!isset($_SESSION['pass'])))
  5. brak_logowania();
  6. else
  7. {
  8. naglowek();
  9. ?>
  10.  
  11. <head><title>zgloszenia</title>
  12. </head>
  13. <body background="img/tlo1.gif" />
  14. <center><img src="img/login.jpg">
  15. <br>
  16. <a href="uzytkownicy.php?tyl=wroc">Wróć</a>
  17. <?php
  18. if(isset($_GET['tyl']) && $_GET['tyl'] == 'wroc'){
  19. ?>
  20. <script LANGUAGE="JavaScript">
  21. if(top.frames.length==0) {
  22. document.write("<B><center>Trwa ładowanie strony... proszę czekać...</center></B>");
  23. window.clear;
  24.  window.location.href="sukces.php";
  25. } else {
  26. document.write("Oj!! coś nie tak!!");
  27. top.frames[1].location.href="blad.htm";
  28. }
  29. </SCRIPT>
  30. <?php
  31.  
  32. }
  33.  
  34. $nazwa = $_POST['nazwa'];
  35. $haslo = $_POST['haslo'];
  36. $uprawnienia = $_POST['uprawnienia'];
  37.  
  38.  
  39. if(!isset($nazwa)&&!isset($haslo)&&!isset($uprawnienia))
  40. {
  41. ?>
  42. <center><br>
  43. <form method = "post" action = "user.php">
  44. <table border = "1">
  45. <tr>
  46. <th> Nazwa uzytkownika</th>
  47. <td> <input type = "text" name="nazwa"> </td>
  48. </tr>
  49. <tr>
  50. <th> Hasło </th>
  51. <td> <input type = "password" name="haslo"> </td>
  52. </tr>
  53. <tr>
  54. <th> Uprawnienia </th>
  55. <td> <select name="uprawnienia">
  56.  <option value="0">ograniczone</option>
  57.  <option value="1">pełne</option>
  58.  </select> </td>
  59. </tr>
  60. <tr>
  61. <td colspan = "2" align = "center"> <input type = submit value = "Dodaj"></td>
  62. </tr>
  63. </form></center>
  64.  
  65. <?php
  66.  
  67. }
  68. else
  69. {
  70. $mysql = mysqli_connect('localhost','a','b');
  71. if(!$mysql)
  72. {
  73. echo 'Nie można połączyć się z serwerem.';
  74. }
  75.  
  76. $wybrana = mysqli_select_db($mysql, 'mp');
  77. if(!wybrana)
  78. {
  79. echo 'Błąd! Nie można znaleźć bazy danych!';
  80. }
  81.  
  82. $zapytanie = "select count(*) from uzytkownicy where
  83. uzytkownik = '$nazwa'";
  84.  
  85. $wynik = mysqli_query( $mysql, $zapytanie );
  86. if(!$wynik)
  87. {
  88. echo 'Błąd! Nie można wykonać kwerendy!';
  89. }
  90.  
  91. $wiersz = mysqli_fetch_row( $wynik);
  92. $ile = $wiersz[0];
  93. if($ile>0)
  94. {
  95. echo 'podany uzytkownik juz istnieje!!';
  96. }
  97.  
  98.  
  99. $moja_kw = "insert into uzytkownicy(id, uzytkownik, haslo, uprawnienia) values(null, '$nazwa', sha1('$haslo'), $uprawnienia)";
  100. $wyk_zapyt = mysqli_query( $mysql, $moja_kw );
  101. //echo '<br>'.$moja_kw;
  102. //echo mysql_error();
  103. if(!$wyk_zapyt)
  104. {
  105. echo '<br>Bład! Dodanie uzytkownika nie powiodlo sie!';
  106. }
  107. else{
  108. echo '<br>Dodano uzytkownika!';
  109. header('Location: uzytkownicy.php');
  110. }
  111.  
  112. }
  113.  
  114. ?>
  115.  
  116. </body>
  117. </html>
  118. <?php
  119. }
  120. ?>

Wyrzuc ami blad ->"Bład! Dodanie uzytkownika nie powiodlo sie!"
Jezeli moglby ktos znalezc jakis blad albo cos madrego doradzic to prosze o pomoc
uzywam wamp5 1.7.2
Kicok
Zamiast mysql_error" title="Zobacz w manualu PHP" target="_manual użyj mysqli_error" title="Zobacz w manualu PHP" target="_manual, odkomentuj tą linijkę i sprawdź, jaki błąd wyrzuci.
XoX
biggrin.gif
INSERT command denied to user 'mp'@'localhost' for table 'uzytkownicy'
oki to teraz prosze mi powiedziec jak to zmienic??
dostep do bazy mam jako root oczywiscie:)
XoX
Oki już sobie poradziłem
Dzięki Kicok naprawdę pomogłeś smile.gif
eirik
Witam,
ja mam deczko inny problem, ale też przy okazji INSERTA.
Otóż odpalenie mysql_query z zapytaniem SQL, w którym uzyte są nazwy zmiennych pobieranych z forumlarza jako parametrem powoduje dodanie rekordu z pustymi wartościami. Jak wpiszę te wartości bezpośrednio do skryptu - wszystko gra. Fragment kodu:

  1. <?php
  2. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  3. $query = "INSERT INTO tblLogin VALUES ('$Login','$Sex','$Name','$Surname','$Password','$Age')";
  4. mysql_query($query);
  5. ?>


Więcej nie pokazuję, bo jak każę mu wyświetlić zawartość tych zmiennych, to pokazuje to, co trzeba. Coś zatem musi być nie tak z wywołaniem kwerendy.
simple programmer
A czy zmienne deklarowałeś z uwzględnieniem wielkości liter ?
$zmienna czy $ZMIENNA to NIE to samo!
eirik
co ciekawe, kazałem skryptowi pokazać zawartość zmiennej @query na ekranie, po skopiowaniu jej do okna SQL-a i uruchomieniu rekord dodaje się bez problemu!
eirik
Wychodzi na to, że wartości z formularza są podstawiane do zmiennych dopiero po przeładowaniu worriedsmiley.gif
To ma taką konsekwencję, że po przeładowaniu lista z płcia powraca do wartości domyślnej. Jak to mogę zmienić = jak zapodać wartość (z bazy danych MySQL) do wyświetlania polu Option?
rezydent
Ja też mam problem z INSERT, nie wyskakuje żaden błąd MySQL, dane nie zapisują się w bazie.
  1. <?php
  2. $polaczenie = mysql_connect("mysql41.sisco.pl", "nazwa_bazy", "haslo_bazy") or die(mysql_error());
  3. $db = mysql_select_db("wizy_dg9") or die (mysql_error());
  4. $serwer = $HTTP_SERVER_VARS["SERVER_NAME"];
  5. $adres = $HTTP_SERVER_VARS["REMOTE_ADDR"];
  6. $host = gethostbyaddr ($HTTP_SERVER_VARS["REMOTE_ADDR"]);
  7. $przegladarka = $HTTP_SERVER_VARS["HTTP_USER_AGENT"];
  8. $data = date("Y-m-d H:i");
  9. $email = $_POST[email];
  10. $wpis = "INSERT INTO nazwa_bazy VALUES ('', '$adres', '$przegladarka', '$host', '$data', '$id', '$email')";
  11. mysql_query ($wpis,$polaczenie);
  12. echo $serwer."<br>".$adres."<br>".$host."<br>".$przegladarka."<br>".$data."<br>";
  13. ?>
golaod
Rezydent to pierwsze nie korzystaj ze starych tablic http_vars tylko nowych jak $_SERVER. Po drugie no ludzie czy wy myslicie, ze my jestesmy jasnowidzami ? Robiac mysql_query pierwszy raz dodawaj zawsze na koncu or die(mysql_error()) tak zeby zobaczyc czy jakis blad Ci wywali i w razie czego poprawisz go zawczasu!
rezydent
Dzięki za wskazówki.
Najpierw wywaliło, że w


  1. <?php
  2. INSERT INTO nazwa_bazy VALUES
  3. ?>


wstawiłem nazwe bazy zamiast nazwe kolumny, a potem taki komunikat:

Column count doesn't match value count at row 1

i nie bardzo wiem o co chodzi.
mike
W zapytaniu INSERT podajesz listę pól do których coś wstawiasz a później parametry, które wstawiasz. Obie listy mają mieć tą samą długość.

Cytat(rezydent @ 23.08.2008, 20:25:52 ) *
Column count doesn't match value count at row 1
Ilość kolumn się nie zgadza.
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.