ugrás a tartalomhoz

mySQL tabla letrehozasa

Anonymous · 2006. Szep. 5. (K), 21.28
Van egy mySQL tabla amelyben van egy cella. A cella erteke csak 0 vagy 1 lehet.

messagereaded
=============
0
1
0
0
A kovetkezo opcioval hozom letre a cellat:

messagereaded VARCHAR(2) NOT NULL
Szeretnem a VARCHAR(2) helyet a SET opciot hasznalni, a fonokomnek ez igy felelne meg.
Szoval a 0 helyet "nem" es az 1 helyet "igen" szavakat kene hasznalni a cellaban.

probaltam letrehozni az egesz tablat igy (PHP-ben):

$create_pm = 'CREATE TABLE pm (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            msg_id VARCHAR(5) NOT NULL,
            file_id VARCHAR(5) NOT NULL,
            uid VARCHAR(5) NOT NULL,
            folderid INT SIGNED NOT NULL,
            messageread SET('nem','igen') NOT NULL)';

mysql_query($create_pm) or die(mysql_error());
De a kovetkezo error fogad:

Parse error: syntax error, unexpected T_STRING in /home2/devfirst/public_html/install.php on line 39
A line 39 pedig ez a sor lenne: messageread SET('nem','igen') NOT NULL)';

Meg tudna valaki mondani mit rontotam el ?
Kosznom!
 
1

folderid

csla · 2006. Szep. 5. (K), 21.59
A folderid-től töröld kis a "SIGNED"-et
2

nem hinném

krey · 2006. Szep. 5. (K), 22.10
Nem hiszem, hogy az sok mindent megoldana. Mivel a PHP dob hibát és nem a MySQL, ezért talán a PHP forrást kéne nézni. Azt hiszem a weblabor féle syntax highlighting tökéletes ennek a szemléltetésére:

<?
$create_pm = 'CREATE TABLE pm (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            msg_id VARCHAR(5) NOT NULL,
            file_id VARCHAR(5) NOT NULL,
            uid VARCHAR(5) NOT NULL,
            folderid INT SIGNED NOT NULL,
            messageread SET('nem','igen') NOT NULL)';

mysql_query($create_pm) or die(mysql_error());
?>
Némi magyarázat hozzá: a szürke az alapszín, ezzel jelennek meg a változók, zölddel a stringek és barnával az függvények, kékkel a zárójelek talán kulcsszavak és barátaik.
Keress olyan szöveget a képen ami szürkével van, pedig zölddel kéne lennie! :)
Sok szerencsét!

üdv. krey
6

escape karakter javallot... :)

dummy · 2006. Szep. 5. (K), 22.19
<?
$create_pm = 'CREATE TABLE pm (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            msg_id VARCHAR(5) NOT NULL,
            file_id VARCHAR(5) NOT NULL,
            uid VARCHAR(5) NOT NULL,
            folderid INT SIGNED NOT NULL,
            messageread SET(\'nem\',\'igen\') NOT NULL)';

mysql_query($create_pm) or die(mysql_error());
?>
3

nem megoldas

Anonymous · 2006. Szep. 5. (K), 22.10
Szuksegem van a SIGNED-ra mert tarolok olyan ertekeket is mint peldaul : -1 -2
4

szerinte..

Anonymous · 2006. Szep. 5. (K), 22.12
Szerintem itt van a baj:

messageread SET('nem','igen') NOT NULL)';
Mert ha a sor nem letezik akkor minden OK. Akkor valami nem tetszik neki, vagy nem igy kell letrehozni ?

Az unsignednam szerintem semmi koze.
5

Igaz is, meg igaz is

csla · 2006. Szep. 5. (K), 22.17
Bocs, én eggyel tovább szaladtam. :)
No, akkor öntsünk tiszta vizet a pohárba, teljesen jogos a PHP hiba, escape-elni kéne a 'nem' és az 'igen'-nél (\).
Viszont én csak az SQL-t néztem, és az is hibás lesz, ha megoldódik a PHP probléma, mert nincs olyan, hogy SIGNED. Ha nincs ott az UNSIGNED, akkor alapból SIGNED.

INT[(M)] [UNSIGNED] [ZEROFILL]

A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295

7

karakter escape

Anonymous · 2006. Szep. 5. (K), 22.22
A karaktereket escapeltem es mukodik ! Koszonom szepen a segitseget !