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`)'
. ' )";
Maarten schreef op 25.09.2006 18:07
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:


<?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...
doe eens echo $sql en toon eens hoe de query eruit komt te zienn
Je moet toch { gebruiken in plaats van (
niek schreef op 25.09.2006 18:07
[quote=Boris schreef op 25.09.2006 18:05]Werkt dat?

Doe anders dit:



<?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...[/quote]

Waarom zet je er dan <?php $sql = ""; ?> omheen:p
Boris: daar heb je een punt... :p haha! niet aan gedacht.

Maar goed, je ziet het script..
...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)
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:


Database
   Tabel 1
         Rij 1
         Rij 2
         Rij 3
   Tabel 2
         Rij 1
   Tabel 3
         Rij 1
         Rij 2
Zo dan:

CREATE TABLE `$tabel` (
`id` INT( 3 ) NOT NULL AUTO_INCREMENT ,
`item` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
Robert schreef op 25.09.2006 19:27
Zo dan:

CREATE TABLE `$tabel` (
`id` INT( 3 ) NOT NULL AUTO_INCREMENT ,
`item` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` )
);


Liever zo:


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.

Reageren