hallo,

Ik krijg de volgende errors bij mijn php script dat MySQL data zou moeten updaten...

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 '(title, descr, categorie, cost, author, demo, authorlink, featured) VALUES ('Rai' at line 1

edit_template_code.php:
<?php
include '../config.php';

ini_set('display_errors', 1); 
error_reporting(E_ALL | E_STRICT);

$nr = $_POST['number'];

$sql="UPDATE template SET (title, descr, categorie, cost, author, demo, authorlink, featured)
VALUES
('$_POST[title]','$_POST[descr]','$_POST[categorie]','$_POST[cost]','$_POST[author]','$_POST[demo]','$_POST[authorlink]','$_POST[featured]') WHERE id = $nr";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Template Updated!!";

mysql_close($con)
?>


Iemand raad?

Jelle
Begin allereerst met het buiten quotes halen van je variabelen. Plaats vervolgens deze regels aan het begin van je script:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
En los dan de fouten op die gegeven worden.

Om te beginnen hoort $_POST[number] namelijk $_POST['number'] te zijn (let op de quotes), 'number' is immers een string en geen constante. Zie ook de eerste foutmelding die je krijgt...

Echo tenslotte als er een fout opstreedt in je query, ook altijd de query die je uitgevoerd hebt. Dan zie je wat er uiteindelijk naar de database gegaan is en wellicht ook al direct waar het fout gaat.
Er gaat niets naar de database^^

Die variabele $nr heb ik nu opgelost en die eerste error is weg.

Er moet iets fout zitten in de MySQL code by $sql maar ik weet niet wat...
Jelle schreef op 27.01.2009 12:52
Er gaat niets naar de database^^
Jij stuurt toch wel degelijk een sql query naar de database om uitgevoerd te worden...

Echo die query dus ook eens als er wat fout gaat bij het uitvoeren ervan. En doe tevens wat met de andere punten die ik in mijn vorige post noemde.
K heb het opgelost dmv dit:

<?php
include '../config.php';

ini_set('display_errors', 1); 
error_reporting(E_ALL | E_STRICT);

$nr = $_POST['number'];

$sql="UPDATE template SET title = '$_POST[title]', descr = '$_POST[descr]', categorie = '$_POST[categorie]', cost = '$_POST[cost]', author = '$_POST[author]', demo = '$_POST[demo]', authorlink = '$_POST[authorlink]', featured = '$_POST[featured]' WHERE id = $nr";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
header ("location: edit_template.php?id=$nr&update=true");

mysql_close($con)
?>


Tx voor je reacties!
Dat is dan ook de enige juiste syntax voor een UPDATE query. Nu enkel nog die variabelen buiten quotes halen, dan ziet het er alweer een stuk beter uit...
^^Hoe bedoel je variables buiten quotes halen?

'$_POST[title]' <- deze?
In plaats van:
<?php

$variabel = 'iets';
echo "Tekst plus $variabel";

dit:
<?php

$variabel = 'iets';
echo 'Tekst plus', $variabel;


EDIT: Typo :)
Jelle schreef op 27.01.2009 13:46
^^Hoe bedoel je variables buiten quotes halen?
Zie de link in mijn eerste post, daarin staat het hoe en waarom uitgelegd.

Het moge duidelijk zijn dat ik doel op de variabelen in je query ;-)

Reageren