Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z php
Forum PHP.pl > Forum > PHP
michalek1988
Pisząc skrypt natrafiłem na problem. Oto fragment kodu źródłowego w którym wystąpił błąd:
Cytat
//Tworzenie tabeli w bazie danych
$query="CREATE TABLE news (
       newsID INTEGER AUTO_INCREMENT PRIMARY_KEY,
       title VARCHAR (300),
       posted INTEGER,
       author VARCHAR (30),
       body MEDIUMTEXT)";

if (mysql_query($query))
{
echo "Utworzenie tabeli... <font color=green><b>OK<//b><//font>";
}
else {
echo "Utworzenie tabeli... <font color=red><b>Error<//b><//font>";
exit;
}


Nie wiem dlaczego nie tworzy się tabela. Zaznaczam, że wcześniej zaznaczyłem bazę poleceniem mysql_select_db() .
Jabol
1. BBCODE
2. dodaj kontrole błędów czyli mysql_error().
michalek1988
Wolałbym aby ktoś wyjaśnił mi jaki błąd jest w tym skrypcie. Aha i jeszcze jedno. Jak dodać tę kontrolę błędów i co ona mi daje.
kossa
wybrales baze, a ustanowiles polaczenie z nia?
borec
myslq_error zwraca tresc bledu ktory wystapil podczas wykonywania zapytania

co do bledu to PRIMARY_KEY musi byc NO NULL
Jabol
Kontrole błędów dodajesz, żeby wiedzieć co jest źle w skrypcie, a dodajesz to wywołaniem 'print mysql_error()' w dobrych miejscach.
Tak na moje to dajesz za duży varchar, zawsze myślałem, że musi być mniejszy 255.

a pk nie musi być not null, bo pk to jest już not null domyslnie.
borec
mozliwe tongue.gif
michalek1988
Jabol ma rację popełniłem błąd przy VARCHAR. Zaraz zobacze czy teraz wszystko gra.
michalek1988
Dalej coś nie gra tyle, że teraz wiem trochę więcej. Taki kod wpisuję w sql:
Cytat
CREATE TABLE news (newsID INTEGER AUTO_INCREMENT PRIMARY_KEY, title VARCHAR (100), posted INTEGER, author VARCHAR (30), body MEDIUMTEXT);

Błędu w kodzie nie ma.
A taki wyświetla mi potem komunikat:
Cytat
Błąd

zapytanie SQL :  

CREATE TABLE news(

newsID INTEGERAUTO_INCREMENTPRIMARY_KEY,
title VARCHAR( 100 ) ,
posted INTEGER,
author VARCHAR( 30 ) ,
body MEDIUMTEXT
)  

MySQL zwrócił komunikat:  


Something is wrong in your syntax obok 'AUTO_INCREMENTPRIMARY_KEY, title VARCHAR( 100  ) , posted INTEGE' w linii 1
Powrót


Teraz mam pytanie: Dlaczego, skoro w sql wpisuje rozdzielnie integer auto.... to w błędzie zwraca mi to napisane razem?questionmark.gif?
borec
moze INT zamiast INTEGER
michalek1988
Już mówiłem, że kod jest poprawny. Sprawdzałem w książce o php.
Jabol
przenieś primary key do oddzielnej linijki i napisz primary i key oddzielnie, spróbuj tak:[sql:1:3c17f89c04]CREATE TABLE news(

newsID INT AUTO_INCREMENT, #można jeszcze spróbować NUMERIC(10)
title VARCHAR( 100 ) ,
posted INTEGER,
author VARCHAR( 30 ) ,
body MEDIUMTEXT,
PRIMARY KEY (newsID) #oddzielnie
) [/sql:1:3c17f89c04]
borec
wlasnie tongue.gif
michalek1988
Dzięki, wszystko gra:). Tylko powiedz mi Jabol czy ten kod napisany przez ciebie jest taki sam jak ten poprzedni tylko inaczej napisany??
Jabol
Cytat
Tylko powiedz mi Jabol czy ten kod napisany przez ciebie jest taki sam jak ten poprzedni tylko inaczej napisany??
dokładnie taki sam, tylko inaczej napisany, jak mówisz
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.