mag CREATE TABLE $my_var?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Maarten hallo

Maarten hallo

25/09/2006 16:53:00
Quote Anchor link
is het mogelijk om een variabele te gebruiken voor de naam van een verse tabel?
ik heb diverse bronnen (waaronder http://dev.mysql.com/doc/refman/5.0/en/create-table.html)
geprobeerd maar niemand heeft het erover, en ik maar syntax errors krijgen..
het lijkt me automatorisch wel relaxed om dit te kunnen doen..

mijn query is nu:

$sql = "CREATE TABLE $table ('
. ' `id` INT NOT NULL AUTO_INCREMENT, '
. ' `item` TEXT(50) NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )";
 
PHP hulp

PHP hulp

18/11/2024 08:30:37
 
Willem Jan Z

Willem Jan Z

25/09/2006 16:56:00
Quote Anchor link
Wat is de error die je krijgt?
En ' . ' is niet handig, gewoon een enter geven is veel makkelijker, dan krijg je namelijk ook meteen te zien op welke regel de error zit. Error opvragen met mysql_error() uiteraard.
 
PHP Newbie

PHP Newbie

25/09/2006 16:57:00
Quote Anchor link
kan, alleen hou dan wel de variabelen buiten de quotes ;-)

Verder krijg je die syntax errors volgens mij hierop:
'
. ' `id`
 
Maarten hallo

Maarten hallo

25/09/2006 16:58:00
Quote Anchor link
1064: 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 '(' . ' `id` INT NOT NULL AUTO_INCREMENT, ' . ' `item` TEXT(50)' at line 1


buiten de quotes houden... dus zo?

$sql = "CREATE TABLE '$table' ('
Gewijzigd op 01/01/1970 01:00:00 door Maarten hallo
 
- -

- -

25/09/2006 17:00:00
Quote Anchor link
Je opent de string met " en vervolgens probeer je te escapen met '

Gebruik gewoon een enter, dat is makkelijker.
 
- -

- -

25/09/2006 17:03:00
Quote Anchor link
$sql = "CREATE TABLE ". $table . " (
'id' INT NOT NULL AUTO_INCREMENT,
'item' TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)";
 
Niek s

niek s

25/09/2006 17:27:00
Quote Anchor link
Jonathan:
$sql = "CREATE TABLE ". $table . " (
'id' INT NOT NULL AUTO_INCREMENT,
'item' TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)";


waarom die quotes?
ik zou het zo doen:

$sql = "CREATE TABLE ".$table." (
id INT NOT NULL AUTO_INCREMENT,
item TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)";

Ik weet het niet zeker, maar volgens mij hoeven de quotes bij de PRIMARY KEY ook niet...

Verbeterde versie:

$sql = "CREATE TABLE ".$table." (
id INT NOT NULL AUTO_INCREMENT,
item TEXT(50) NOT NULL,
PRIMARY KEY (id)
)";
Gewijzigd op 01/01/1970 01:00:00 door niek s
 
Hipska BE

Hipska BE

25/09/2006 18:01:00
Quote Anchor link
idd, niek en dit is ook de oplossing die ik wou geven
 
K i p

K i p

25/09/2006 18:05:00
Quote Anchor link
Werkt dat?

Doe anders dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

//blabla

$sql = "CREATE TABLE ".$table." (
id INT NOT NULL AUTO_INCREMENT,
item TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)"
;
$res = mysql_query($sql) or die("Mmm, er ging iets mis. Dit is de SQL die je invoerde: <br />".$sql."<br /> En dit is de fout die MySQL teruggav: <br />".mysql_error());


//blabla

?>


Groet,

Boris
 
Maarten hallo

Maarten hallo

25/09/2006 18:07:00
Quote Anchor link
hmm.. het werkt allemaal niet.. met of zonder qoutes.. de error blijft :
1064: 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 '( id INT NOT NULL AUTO_INCREMENT, item TEXT(50) NOT NULL, PRIMARY KEY ('id') ' at line 1

en ook belangrijk: de variabele die de tabelnaam moet dragen wordt even niet gevuld...

is er iemand zo lief om mij op de grote fout (niet alle kleintjes aub, ik ben beginner) te wijzen? hier is het script:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
session_start();

error_reporting(E_ALL);


$id= $_GET['id'];
$counter='';
$count_shit = '';
$table = '';

//klantnummer maken.
if (!isset($_COOKIE['shop']))     {
$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);
$queryResult = mysql_query("SELECT * FROM counter", $dbLink)or die("<b>item not found</b><br>" . mysql_errno () . ": " . mysql_error());
while ($rowData = mysql_fetch_row($queryResult)) {
$counter = $rowData[0];
$count_shit = $counter +1;

            $query = "UPDATE counter SET views = '$count_shit'";
            mysql_query($query,$dbLink) or die("<b>FAILED</b><br>" . mysql_errno () . ": " . mysql_error());

setcookie('shop', $count_shit);
}



$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);

//tabel voor klant maken
$table = $_COOKIE['shop'];

            $sql = "CREATE TABLE ".$table." (
            id INT NOT NULL AUTO_INCREMENT,
            item TEXT(50) NOT NULL,
            PRIMARY KEY ('id')
            )"
;
            mysql_query($sql,$dbLink) or die("<b>KRENG</b><br>" . mysql_errno () . ": " . mysql_error());

}


//productnaam ophalen
$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);

$queryResult2 = mysql_query("SELECT * FROM catalogue WHERE id=$id", $dbLink)or die("<b>item not found</b><br>" . mysql_errno () . ": " . mysql_error());

while ($rowData = mysql_fetch_row($queryResult2)) {
$item = $rowData[1];

}
    

//product in tabel voor klant doen..
$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);
$table = $_COOKIE['shop'];
            $query = "INSERT INTO $table (id, item)
            values
            ('NOT NULL', '$item')"
;
            mysql_query($query,$dbLink) or die;

//header ("location: index2.php");
?>
 
Niek s

niek s

25/09/2006 18:07:00
Quote Anchor link
Boris:
Werkt dat?

Doe anders dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

//blabla

$sql = "CREATE TABLE ".$table." (
id INT NOT NULL AUTO_INCREMENT,
item TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)"
;
$res = mysql_query($sql) or die("Mmm, er ging iets mis. Dit is de SQL die je invoerde: <br />".$sql."<br /> En dit is de fout die MySQL teruggav: <br />".mysql_error());


//blabla

?>


Groet,

Boris


Waarom zo? je kan het tog ook gewoon in PMA invoeren?

En zie mijn bewerkte post hierboven trouwens nog even...
 
Niek s

niek s

25/09/2006 18:09:00
Quote Anchor link
Maarten:
hmm.. het werkt allemaal niet.. met of zonder qoutes.. de error blijft :
1064: 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 '( id INT NOT NULL AUTO_INCREMENT, item TEXT(50) NOT NULL, PRIMARY KEY ('id') ' at line 1

en ook belangrijk: de variabele die de tabelnaam moet dragen wordt even niet gevuld...

is er iemand zo lief om mij op de grote fout (niet alle kleintjes aub, ik ben beginner) te wijzen? hier is het script:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
session_start();

error_reporting(E_ALL);


$id= $_GET['id'];
$counter='';
$count_shit = '';
$table = '';

//klantnummer maken.
if (!isset($_COOKIE['shop']))     {
$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);
$queryResult = mysql_query("SELECT * FROM counter", $dbLink)or die("<b>item not found</b><br>" . mysql_errno () . ": " . mysql_error());
while ($rowData = mysql_fetch_row($queryResult)) {
$counter = $rowData[0];
$count_shit = $counter +1;

            $query = "UPDATE counter SET views = '$count_shit'";
            mysql_query($query,$dbLink) or die("<b>FAILED</b><br>" . mysql_errno () . ": " . mysql_error());

setcookie('shop', $count_shit);
}



$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);

//tabel voor klant maken
$table = $_COOKIE['shop'];

            $sql = "CREATE TABLE ".$table." (
            id INT NOT NULL AUTO_INCREMENT,
            item TEXT(50) NOT NULL,
            PRIMARY KEY ('id')
            )"
;
            mysql_query($sql,$dbLink) or die("<b>KRENG</b><br>" . mysql_errno () . ": " . mysql_error());

}


//productnaam ophalen
$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);

$queryResult2 = mysql_query("SELECT * FROM catalogue WHERE id=$id", $dbLink)or die("<b>item not found</b><br>" . mysql_errno () . ": " . mysql_error());

while ($rowData = mysql_fetch_row($queryResult2)) {
$item = $rowData[1];

}
    

//product in tabel voor klant doen..
$dbLink = mysql_connect("localhost", "root", "") or die(mysql_errno () . ": " . mysql_error());
mysql_select_db("audioassault", $dbLink);
$table = $_COOKIE['shop'];
            $query = "INSERT INTO $table (id, item)
            values
            ('NOT NULL', '$item')"
;
            mysql_query($query,$dbLink) or die;

//header ("location: index2.php");
?>




Probeer de quotes bij het id ook eens weg te halen.
Quotes zorgen namelijk ook soms voor de nodige problemen...
Ik ben nu je script aan het bekijken op verdere fouten

edit: als de tabel naam niet wort geset, betekent dat dat $_COOKIE['shop'] niet bestaat. Controleer eerst eens of die wel bestaat.

En als ik zo je script bekijk, heb je een gigantische fout in je datamodel! Ben je nu voor iedere gebruiker een apparte tabel aan het aanmaken?
Lees anders dit artiekel eens door...
Gewijzigd op 01/01/1970 01:00:00 door niek s
 
Hipska BE

Hipska BE

25/09/2006 18:14:00
Quote Anchor link
doe eens echo $sql en toon eens hoe de query eruit komt te zienn
 
- SanThe -

- SanThe -

25/09/2006 18:22:00
Quote Anchor link
Je moet toch { gebruiken in plaats van (
 
Klaasjan Boven

Klaasjan Boven

25/09/2006 18:39:00
Quote Anchor link
ik moet beter opletten
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
K i p

K i p

25/09/2006 18:43:00
Quote Anchor link
niek:
Boris:
Werkt dat?

Doe anders dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

//blabla

$sql = "CREATE TABLE ".$table." (
id INT NOT NULL AUTO_INCREMENT,
item TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)"
;
$res = mysql_query($sql) or die("Mmm, er ging iets mis. Dit is de SQL die je invoerde: <br />".$sql."<br /> En dit is de fout die MySQL teruggav: <br />".mysql_error());


//blabla

?>


Groet,

Boris


Waarom zo? je kan het tog ook gewoon in PMA invoeren?

En zie mijn bewerkte post hierboven trouwens nog even...


Waarom zet je er dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $sql = ""; ?>
omheen:p
 
Niek s

niek s

25/09/2006 18:53:00
Quote Anchor link
Boris: daar heb je een punt... :p haha! niet aan gedacht.

Maar goed, je ziet het script..
 
Maarten hallo

Maarten hallo

25/09/2006 19:03:00
Quote Anchor link
...Ben je nu voor iedere gebruiker een apparte tabel aan het aanmaken?....

ja, ik wil dat elk product een eigen rij heeft omdat het me niet lukte om een array te vullen met producten.
ik ben afgehaakt toen ik met Serialize alleen maar weer errors kreeg, ik dacht dan maar quick and dirty maar dan weet ik in ieder geval hoe het moet.
excuus voor deze ranzige manier maar zoveel klanten krijgen we nou ook weer niet :P .


Anyway..
dit is de query die bij de error verschijnt.

CREATE TABLE 94 ( id INT NOT NULL AUTO_INCREMENT, item TEXT(50) NOT NULL, PRIMARY KEY (id) )

94 is het automatisch gegenereerde getal (94 x geprobeerd pas :P)
Gewijzigd op 01/01/1970 01:00:00 door Maarten hallo
 
PHP Newbie

PHP Newbie

25/09/2006 19:15:00
Quote Anchor link
Een rij is iets heel anders dan een tabel Maarten.

Je moet 1 tabel hebben, en daarin meerdere RIJEN, en voor ieder product gebruik je 1 RIJ in de TABEL:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
Database
   Tabel 1
         Rij 1
         Rij 2
         Rij 3
   Tabel 2
         Rij 1
   Tabel 3
         Rij 1
         Rij 2
 
Robert Deiman

Robert Deiman

25/09/2006 19:27:00
Quote Anchor link
Zo dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE `$tabel` (
`id` INT( 3 ) NOT NULL AUTO_INCREMENT ,
`item` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
 
Niek s

niek s

25/09/2006 19:31:00
Quote Anchor link
Robert:
Zo dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE `$tabel` (
`id` INT( 3 ) NOT NULL AUTO_INCREMENT ,
`item` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` )
);


Liever zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE $tabel (
id INT( 3 ) NOT NULL AUTO_INCREMENT ,
item VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( id )
);


ookal heb je het niet buiten haaken gezet ("blabla".$var."bla") denk ik tog dat het zo moet.
Gewijzigd op 01/01/1970 01:00:00 door niek s
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.