fout in de query insert

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Net-marker

net-marker

23/05/2006 21:01:00
Quote Anchor link
hallo

ik heb een insert query gemaakt. alleen krijg ik hierbij de volgende foutmelding

"if(!empty($_POST))
{
$query = "INSERT INTO messages
SET(
msg_id = '',
msg_date = CURDATE(),
msg_time = CURTIME(),
msg_title = '". $_POST['msg_title']. "',
msg_type = '".$bericht_type."',
msg_text = '". escape($msg_text). "',
msg_url = '". $_POST['msg_url']. "',
msg_naam = '". $_POST['msg_naam']. "',
msg_land = '". $_POST['msg_land']. "',
msg_niveau = '". $_POST['msg_niveau']. "'
);
";


$result = mysql_query($query) or die(mysql_error());
header("location: messages.php");
}

"
kan iemand mij helpen met het juist noteren van de code?
if(!empty($_POST))
{
$query = "INSERT INTO messages
SET(
msg_id = '',
msg_date = CURDATE(),
msg_time = CURTIME(),
msg_title = '". $_POST['msg_title']. "',
msg_type = '".$bericht_type."',
msg_text = '". escape($msg_text). "',
msg_url = '". $_POST['msg_url']. "',
msg_naam = '". $_POST['msg_naam']. "',
msg_land = '". $_POST['msg_land']. "',
msg_niveau = '". $_POST['msg_niveau']. "'
);
";


$result = mysql_query($query) or die(mysql_error());
header("location: messages.php");
}
 
PHP hulp

PHP hulp

16/11/2024 22:38:26
 
Willem Jan Z

Willem Jan Z

23/05/2006 21:03:00
Quote Anchor link
Vind je het heel erg als ik geen foutmelding zie staan?
 
Frank -

Frank -

23/05/2006 21:07:00
Quote Anchor link
Neem een goede editor, dan zie je snel genoeg dat $query niet correct wordt afgesloten. );"; is wat er op de laatste 2 regels staat. Dit moet zijn )";
 
Net-marker

net-marker

23/05/2006 21:11:00
Quote Anchor link
oke ik heb de fout waar frank me op wees aangepast.
De melding was ik even vergeten. Maar hij is er nog wel :-)

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 '( msg_id = '', msg_date = CURDATE(), msg_time = CURT' at line 2

enig idee??
 
Frank -

Frank -

23/05/2006 21:19:00
Quote Anchor link
Zelf gebruik ik nooit SET i.c.m. INSERT INTO, maar mag je wel haakjes () gebruiken? Lijkt mij eigenlijk van wel, maar dat is wel het punt waar het mis gaat. Haal ze even weg en laat even weten of het is gelukt.
 
Net-marker

net-marker

23/05/2006 21:27:00
Quote Anchor link
oke ik krijg geen foutmelding meer. maar er wordt ook niks in mijn db geplaast
 
Frank -

Frank -

23/05/2006 21:34:00
Quote Anchor link
Controleer je wel of de query is gelukt? Ik vermoed van niet. En zoals bekend is, gaat een query vroeg of laat ALTIJD mis. In dit geval dus vrij vroeg ;)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$query
="blablabla";
$result = mysql_query($query);
if(!$result){ // query is mislukt
  echo 'Mislukt: '.mysql_query().'<br />';
  echo 'met query: '.$query;
  die(); // beetje bot, kan beter
}

// rest van je code
?>

Dat was even een snel voorbeeldje om wat aan foutafhandeling te doen.
 
Net-marker

net-marker

23/05/2006 21:45:00
Quote Anchor link
als ik nu de pagina probeer te openen om een nieuw bericht aan te maken krijg ik de melding Mislukt: met query: blablabla.

ik had bij de echo mysql_query(). er uit gelaten omdat deze de foutmelding


Warning: Wrong parameter count for mysql_query() in /usr/home/n1087/domains/ubee-ht.nl/public_html/SBM/test/cms/new_message.php on line 43

gaf
 
Frank -

Frank -

23/05/2006 21:48:00
Quote Anchor link
Heb een hele stomme tik-/denkfout gemaakt. Op regel 5 hoort natuurlijk mysql_error() te staan en niet mysql_query()...

Maar even een vraagje van mijn kant, de onzinquery blablabla heb je toch wel vervangen door jouw eigen query???
 
Net-marker

net-marker

23/05/2006 21:55:00
Quote Anchor link
ja ik zal er nog even naar kijken

ik heb ook dit gebprobeerd

if(!empty($_POST)){
$query = "INSERT INTO messages
VALUES(
'',
CURDATE(),
CURTIME(),
'". $_POST["msg_title"]."',
'". $_POST["msg_type"]. "',
'". escape($msg_text). "',
'". $_POST['msg_url']. "',
'". $_POST['msg_naam']. "',
'". $_POST['msg_land']. "',
'". $_POST['msg_niveau']. "'

);";

$result = mysql_query($query) or die(mysql_error());
header("location: messages.php");
}

maar dan krijg ik de melding

Column count doesn't match value count at row 1
 
Jan Koehoorn

Jan Koehoorn

23/05/2006 22:01:00
Quote Anchor link
Als je het met values doet, moet het zo:

INSERT INTO messages
(veld1, veld2)
VALUES
('waarde1', 'waarde2')
 
Frank -

Frank -

23/05/2006 22:03:00
Quote Anchor link
Gaan we weer: Je maakt wederom dezelfde fout met de query );"; is niet goed! Verder kom het aantal waardes in je query niet overeen met het aantal kolommen in je tabel, gok ik zo.

Ga eens gestructureerd debuggen, echo de query eens om te zien wat je nu naar de database verstuurd, voer de query eens uit in phpmyadmin, etc., etc. Er zijn honderden mogelijkheden om te debuggen, maar je MOET het gestructureerd doen.

Het valt mij nu ook op dat je zowel dubbele als enkele quotes gebruikt om de sleutels in je array: $_POST["msg_title"] en $_POST['msg_url']. Het kan op zich geen kwaad, maar geeft wel aan dat je code 1 grote bende is. Op deze manier maak je het jezelf wel heel erg lastig. Maar goed, dat kan een keuze zijn.
 
Net-marker

net-marker

23/05/2006 22:07:00
Quote Anchor link
Oke bedankt voor de tip. ik heb nu dit en het werkt.
deze code is verder toch wel netjes?

if(!empty($_POST))
{
$query = "INSERT INTO messages
SET
msg_id = '',
msg_date = CURDATE(),
msg_time = CURTIME(),
msg_title = '". $_POST['msg_title']. "',
msg_type = '".$bericht_type."',
msg_text = '". escape($msg_text). "',
msg_url = '". $_POST['msg_url']. "',
msg_naam = '". $_POST['msg_naam']. "',
msg_land = '". $_POST['msg_land']. "',
msg_niveau = '". $_POST['msg_niveau']. "'

";
$result = mysql_query($query) or die(mysql_error());
header("location: messages.php");

if(!$result){ // query is mislukt
echo 'Mislukt: '.mysql_error().'<br />';
echo 'met query: '.$query;
die(); // beetje bot, kan beter
}
 
Willem Jan Z

Willem Jan Z

23/05/2006 22:09:00
Quote Anchor link
Frank, ik geloof dat het nu de 4e keer is dat ik het je vertel :P
Een query sluit je af met ;
Dus );"; is net zo goed als )";
Alleen is het niet verplicht als je maar 1 query uitvoert.
Helaas kan je in mysql_query() niet meerdere query's stoppen.

Edit:
@net-marker
Nee, kijk naar Jan zijn POST:
INSERT INTO VALUES
Dus niet!
INSERT INTO SET
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Frank -

Frank -

23/05/2006 22:10:00
Quote Anchor link
Nee, is niet netjes. De foutafhandeling komt letterlijk als mosterd na de maaltijd.
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
<?php
// eerste deel van je code t/m de query en dan:

result = mysql_query($query);

if(!$result){ // query is mislukt
  echo 'Mislukt: '.mysql_error().'<br />';
  echo 'met query: '.$query;
  die(); // beetje bot, kan beter
}
else {
  header("location: messages.php");
}

?>
 



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.