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`)'
. ' )";
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.
kan, alleen hou dan wel de variabelen buiten de quotes ;-)

Verder krijg je die syntax errors volgens mij hierop:
'
. ' `id`
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' ('
Je opent de string met " en vervolgens probeer je te escapen met '

Gebruik gewoon een enter, dat is makkelijker.
$sql = "CREATE TABLE ". $table . " (
'id' INT NOT NULL AUTO_INCREMENT,
'item' TEXT(50) NOT NULL,
PRIMARY KEY ('id')
)";
Jonathan Hogervorst schreef op 25.09.2006 17:03
$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)
)";
idd, niek en dit is ook de oplossing die ik wou geven
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
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");
?>


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...

Reageren