• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dziwny błąd zapytania insert into

0 głosów
594 wizyt
pytanie zadane 25 grudnia 2015 w PHP przez Cybulex Nowicjusz (150 p.)

Witam, tworzę sobie taki skrypt ucząc się PHP & MySQL i napotkałem na dziwny błąd zapytania insert into napisanego w PHP.

Podaje poniżej cały kod:

<!DOCTYPE html>
<html>
<head>
<title>Score added!</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css" />
<body>
<h1>Guitar Wars - Add Score!</h1>
<?php
require_once('../connectdb.php');
require_once('../constants.php');
require_once('../errors.php');

function url() {
    echo('<br /><a href="addscore.html">Back to Add Score!</a>');
}

$name = $_POST['name'];
$score = $_POST['score'];
$UploadFile = $_FILES['screenshot']['name'];
$tmp_file = $_FILES['screenshot']['tmp_name'];
$target = IMAGEPATH.$UploadFile;
$sizeupfile = $_FILES['screenshot']['size'];
$maxsize = SIZE;
$type = $_FILES['screenshot']['type'];

if (!empty($name) && !empty($score) && !empty($UploadFile) && isset($_POST['submit'])) {
    if ( ($type == "image/jpeg") || ($type == "image/png") || ($type == "image/gif") && ($sizeupfile <= $maxsize) && $sizeupfile > 0) {
        if (move_uploaded_file($tmp_file, $target)) {
        $sql = "INSERT INTO guitarwars (id, date, name, score, screenshot) VALUES (NULL, NOW(), '$name', '$score', '$UploadFile')";
        mysqli_query($dbconnect, $sql)
        or die("Error INSERT INTO query!");
        echo('Success message!<br />');
        } else {
            echo('Move file fail!');
        }
    } else {
        //show fail message
        echo('Fail message file format and size!<br />');
    }
} else {
    echo('You don\'t add score, name or image!');
    url();
}
mysqli_close($dbconnect);
?>
</body>
</head>
</html>

Wyświetla się komunikat o błędzie insert into. Sprawdzałem składnie i nie widzę błędów. Może ktoś mnie naprowadzić na błąd, bo może podświadomie trudno dostrzec mi moje błędy. :)

2 odpowiedzi

0 głosów
odpowiedź 25 grudnia 2015 przez writen Nałogowiec (29,060 p.)
wybrane 25 grudnia 2015 przez Cybulex
 
Najlepsza
Fajnie, że sobie wyświetlasz komunikat o jakimś tam błędzie. Ale czemu nie wyświetlisz treści tego błędu? http://php.net/manual/en/mysqli.error.php

Będzie chyba łatwiej dojść do tego w czym problem, prawda?
+1 głos
odpowiedź 25 grudnia 2015 przez Arkadiusz Waluk Ekspert (291,530 p.)
$sql = "INSERT INTO guitarwars (id, date, name, score, screenshot) VALUES (NULL, NOW(), '$name', '$score', '$UploadFile')";

Próbujesz ustawić id, które jak się można domyślać jest kluczem podstawowym i pewnie ma autonumerowanie, na NULL?

komentarz 25 grudnia 2015 przez Cybulex Nowicjusz (150 p.)

Nie widzę tutaj żadnego problemu. Czy dam wartość 0 czy NULL, nie będzie jak dla mnie tutaj różnicy.

<?php
require_once('../connectdb.php');

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];

$sql = "INSERT INTO elvis_mails (id, first_name, last_name, email) VALUES (NULL, '$firstname', '$lastname', '$email')";
mysqli_query($dbconnect, $sql)
or die("Błąd w zapytaniu!");
mysqli_close($dbconnect);

echo("Zapytanie zostało dodane pomyślnie!<br /><a href=\"index.php\">Powrót!</a>");
?>

Powyżej masz kod dodawania e-maila z imieniem i nazwiskiem, który działa. Zapytanie po prostu wykonuje się poprawnie, a jego budowa jest identyczna.

Istnieją jakieś przeciw wskazania do używania NULL? Bo zastanawia mnie dlaczego zwróciłeś na to uwagę. Pewnie czegoś nie wiem. :)

komentarz 25 grudnia 2015 przez Arkadiusz Waluk Ekspert (291,530 p.)

Okej w takim razie możliwe że jednak to przechodzi. Moja propozycja jest więc taka abyś wrzucił to zapytanie bezpośrednio do bazy - pewnie korzystasz z phpMyAdmin więc wklej tam zapytanie w stylu

INSERT INTO guitarwars (id, date, name, score, screenshot) VALUES (NULL, NOW(), 'name', 'score', 'file');

Tak aby sprawdzić czy ono zostanie wykonane - jeśli masz w którejś z tych kolumn liczbę a nie tekst to oczywiście podmień.

A zwróciłem na to uwagę bo sam mam nawyk po prostu omijania kolumny z id i tak chyba najczęściej się robi - po prostu jej nie podaje gdyż w bazie i tak jest autonumerowanie więc automatycznie zostanie tam wstawiona kolejna wartość. Po co w takim razie przedłużać sobie zapytanie? :)

komentarz 25 grudnia 2015 przez Cybulex Nowicjusz (150 p.)
Zapomniałem o tym wspomnieć, że to sprawdzałem już i PHPMyAdmin nie wyświetlił żadnego błędu, więc stąd moje zdziwienie, że PHP twierdzi jednak, że zapytanie jest niepoprawne.
komentarz 25 grudnia 2015 przez Arkadiusz Waluk Ekspert (291,530 p.)
Skoro w bazie przechodzi a z PHP nie przechodzi to wątpię czy dotyczy to samego zapytania. Połączenie z bazą na pewno jest? Spróbuj jeszcze wyświetlić błędy przez mysqli_error - to powinno coś pokazać.

Podobne pytania

0 głosów
2 odpowiedzi 1,212 wizyt
pytanie zadane 5 maja 2016 w PHP przez kuba1414 Nowicjusz (120 p.)
+2 głosów
1 odpowiedź 555 wizyt
0 głosów
1 odpowiedź 428 wizyt
pytanie zadane 16 lutego 2017 w SQL, bazy danych przez Marchiew Dyskutant (7,730 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...