podjąłem się zadania napisania b. prostego skryptu dodawania komentarzy na stronę z formularza. Na tę chwilę bez żadnych zabezpieczeń, itp. Skrypt teoretycznie działa (nie wyświetla błędów), ale nie dodaje wpisów do mysql na localhoście.
Bardzo prosty plik z formularzem: NAZWA: dane.php
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <http://december.com/html/4/element/html.html lang="pl-PL"> <http://december.com/html/4/element/head.html> <http://december.com/html/4/element/meta.html http-equiv="content-type" content="text/html; charset=utf-8_polish_ci"> <http://december.com/html/4/element/title.html>Dodanie</http://december.com/html/4/element/title.html> </http://december.com/html/4/element/head.html> <http://december.com/html/4/element/body.html> <http://december.com/html/4/element/form.html action="zapisz.php" method="post"> Imię: <http://december.com/html/4/element/input.html type="TEXT" name="imie"><http://december.com/html/4/element/br.html /> Treść: <http://december.com/html/4/element/input.html type="TEXT" name="tresc"><http://december.com/html/4/element/br.html /> <http://december.com/html/4/element/input.html type="SUBMIT" value="DODAJ"><http://december.com/html/4/element/br.html /> </http://december.com/html/4/element/form.html> </http://december.com/html/4/element/body.html> </http://december.com/html/4/element/html.html>
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "komentarze"; ?>
<?php require("dbconnect.php"); $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_query($conn, "SET CHARSET utf8"); mysqli_query($conn, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); $imie = $_POST['imie']; $tresc = $_POST['tresc']; http://www.php.net/echo "$imie. $tresc"; $zapytanie = "INSERT INTO 'komentarze' VALUES('$imie','$tresc')"; $wykonaj = "mysql_query('$zapytanie')"; mysqli_query($conn, $wykonaj); ?>
Wstaw dodatkowo do kodu
mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ALL);
Wstawiłem ten kod zaraz po linijce połaczenia, wyskoczyło:
Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'mysql_query('INSERT INTO 'komentarze' VALUES('dsfg','dfgdfgdfg')')' at line 1 in C:\xampp\htdocs\zapisz.php:13 Stack trace: #0 C:\xampp\htdocs\zapisz.php(13): mysqli_query(Object(mysqli), 'mysql_query('IN...') #1 {main} thrown in C:\xampp\htdocs\zapisz.php on line 13
To juz wiesz gdzie szukać. A powiedz dlaczego do query nie wstawiasz zapytanie tylko string będący przestarzałą funkcją mysql_query?
Witam,
Wiem tyle, że NIC nie wiem :-D Skopiowałem nawet polecenia z mysql z xampp jak dodaje ręcznie wpisy i dalej nic..
<?php require("dbconnect.php"); $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_query($conn, "SET CHARSET utf8"); mysqli_query($conn, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); $imie = $_POST['imie']; $tresc = $_POST['tresc']; if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO 'komentarze' ('id', 'imie', 'tresc') VALUES (NULL, \'$imie\', \'$tresc\')"; if (mysqli_query($conn, $sql)) { echo "Dodano do bazy!"; } else { echo "Nie dodano!: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?>
INSERT INTO 'komentarze' ('id', 'imie', 'tresc') VALUES (NULL, \'Robert\', \'Jakaś treść\') You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''komentarze' ('id', 'imie', 'tresc') VALUES (NULL, \'Robert\', \'Jakaś treść\' at line 1
Wez to zrób jak czlowiek.
Wtedy nie bedziesz mial problemów
dublinka, dziękuję, na prawdę taka pomoc zawsze mile widziana, anyway:
Po 1000ach prób okazało się, że wszystko było OK, ale po skasowaniu 2 linijek od polskich znaków posżło.. więc tu coś się nie zgadzało. Wkleję działający kod, a nóż komuś pomogę..
<?php require("dbconnect.php"); $conn = mysqli_connect($servername, $username, $password, $dbname); $imie = $_POST['imie']; $tresc = $_POST['tresc']; if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO `tabela` (`id`, `imie`, `tresc`) VALUES (NULL, '$imie', '$tresc')"; $pol = "SET NAMES `utf8` COLLATE `utf8_polish_ci`"; mysqli_query($conn, $pol); if (mysqli_query($conn, $sql)) { echo "Dodano do bazy!"; } else { echo "Nie dodano!: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?>
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)