You have an error in your SQL syntax...

Status
Niet open voor verdere reacties.

James007

Meubilair
Lid geworden
7 jan 2005
Berichten
5.794
Hoi,

Situatie:
Ik heb:
  • Een tabel die de categorieën voor de video's moet opslaan.
  • Een formulier waar ik een naam en omschrijving kan opgeven voor de categorie-toevoegfunctie
  • Een script dat de informatie uitleest uit het formulier en doorstuurt naar de database.
  • Een syntaxfout

Code die het formulier moet verwerken
Ben ik nu blind of heb ik echt niets verkeerds getypt bij $sql?
PHP:
<?php
require_once('connect.inc.php');

// EEN NIEUWE CATEGORIE AANMAKEN

if (isset($_POST['submit'])) {
	// VERWERKING vd VARIABELEN
	$name = htmlentities(strip_tags($_POST['name']));
	$desc = htmlentities(strip_tags($_POST['desc']));

	// SQL OPSTELLEN
	$sql = "INSERT INTO vid_cat (name,desc) VALUES('$name','$desc')";

	// VERBINDING MAKEN
	$verbinding	=	mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
	mysql_select_db("depiloot", $verbinding) or die('Kon de database niet openen:'.mysql_error());
	$resultaat = mysql_query($sql) or die("Query mislukt:".mysql_error());
	
	print 'Categorie toegevoegd.';
} else {
	?>

Het formulier zelf:
PHP:
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST" name="make_cat">
<table class="admin">
<tr>
<td colspan="2">Gebruik deze pagina om een nieuwe videocategorie toe te voegen.</td>
</tr>
<tr>
<td class="c1">Naam:</td>
<td><input type="text" name="name" class="text" /></td>
</tr>
<tr>
<td class="c1">Omschrijving:</td>
<td><input type="text" name="desc" class="text" /></td>
</tr>
<td class="c1">Submit:</td>
<td><input name="submit" type="submit" value="Categorie aanmaken" class="button"/></td>
</table>
</form>

<?php
}
?>

Een schermafdruk van mijn tabel:
table_vid_cat.gif


Waarom geeft hij:
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 '(name,desc) VALUES('Testing','Testingggg')' at line 1

Help?
 
Laatst bewerkt:
Opgelost dankzij Jpeetje:

vid_cat (name,desc) moest vid_cat (`name`,`desc`) zijn.

James007
 
zelfde probleem You have an error in your SQL syntax...

ik heb het zelfde probleem maar dan met mijn gegevens te tonen

ik moet test_name van testtable laten zien maar ik krijg die zelfde error:

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 'test_name FROM testtable' at line 1

ik zouw wel wat hulp kunnen gebruiken als iemand me wil helpen

PHP:
<?php  
//replace it with your host normally it could be localhost
$hostname='localhost';
//mysql user name
$username='name';
//mysql user password
$password='pass';
//connect to the mysql server
$ss = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 
//select a database on the mysql server
//please change as you like the database name
mysql_select_db('database'); 
 
//SHOW COLUMNS FROM TABLENAME
$query=mysql_query('SHOW test_name FROM testtable') or die(mysql_error());
 
//iterate trough the query result and fetch each field
while($field=mysql_fetch_object($query)){
$fields[]=$field;//collect each field into a array
};
 
print_r($fields);//test the fields array
 
foreach($fields as $key=>$field){
echo $field->Field.'</br>'; // print each field name
}
 
?>
 
Het keyword dat je zoekt is SELECT, niet SHOW. SHOW is voor logs, informatie over de structuur van tabellen, procedures, en meer van die dingen. SELECT is om informatie uit een tabel op te vragen.
 
aray

wow dat was het, maar nu laat hij dit zien terwijl het gewoon Welcome to Watchmovie zouw moeten zijn


Array
(
[0] => stdClass Object
(
[test_name] => Welcome to Watchmovie
)
 
Wat je daar ziet is de print_r die je er als test boven gezet hebt.

Als je die weghaalt zie je niks meer, en als je de titel wil zien moet je in je foreach niet verwijzen naar $field->Field want er is geen kolom opgehaald die Field heet, je kolom heet test_name, dus het moet $field->test_name zijn.
 
het werk

wow hartelijk bedankt het werkt,
het script ziet er nu zo uit voor als iemand het ook wil gebruiken.

PHP:
<?php  
//replace it with your host normally it could be localhost
$hostname='localhost';
//mysql user name
$username='name';
//mysql user password
$password='pass';
//connect to the mysql server
$ss = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 
//select a database on the mysql server
//please change as you like the database name
mysql_select_db('database'); 
 
//SHOW COLUMNS FROM TABLENAME
$query=mysql_query('SHOW test_name FROM testtable') or die(mysql_error());
 
//iterate trough the query result and fetch each field
while($field=mysql_fetch_object($query)){
$fields[]=$field;//collect each field into a array
};
 
foreach($fields as $key=>$field){
echo $field->test_name.'</br>'; // print each field name
}
 
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan