$result = mysql_query("SELECT * FROM contact ORDER by id DESC WHERE gelezen = '0'")or die ("Fout!");

Ik krijg dus de melding fout,,,
wat is er fout aan deze query?

\\Edit als ik de where weghaal doet hij het wel :S
SELECT * FROM contact WHERE gelezen = 0 ORDER BY id DESC

Volgorde klopte niet.
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr, ...
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name' export_options
      | INTO DUMPFILE 'file_name'
      | INTO @var_name [, @var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]


Het moet in deze volgorde. WHERE is dus vóór ORDER BY.
Dankje, ik zal het gelijk opslaan
2 fouten: die() zet je niet in een fraai stukje script, geen mens die het kan waarderen dat een script zomaar het bijltje er bij neergooid. Ten tweede roep jij 'fout'. Dat zegt natuurlijk wel ongelovelijk weinig, eigenlijk helemaal niets. Dat blijkt ook wel, je hebt zelf ook geen flauw idee wat er dan fout gaat. Voortaan met mysql_error() opvragen wat er dan fout gaat, dan kun je de fout tenminste gaan oplossen.

die() kun je eenvoudig vermijden door te controleren of $result TRUE of FALSE is. Als deze FALSE is, dan is de query dus mislukt.
@frank, als je mysql_error() gebruikt.. en er gaat een keer iets fout met je database.. kunnen hackers aan sappige info komen..
maar die tweede oplossing is wel handig :D
leroy schreef op 11.11.2006 21:09
@frank, als je mysql_error() gebruikt.. en er gaat een keer iets fout met je database.. kunnen hackers aan sappige info komen..
maar die tweede oplossing is wel handig :D


Dat klopt, maar je moet dat ook niet meer zo op internet zetten, met die mysql_error(); Dat is voor jezelf, om ermee te werken, en het script te maken, zo kan je veel fouten voorkomen of zelf herstellen, zonder dat je een ander moet vragen.
Op internet kan je bijvoorbeeld iets doen als:

<?php
// controleren of query is gelukt
if(mysql_query($sql_statement) == TRUE){
//ga verder met je script
}
//als query is mislukt
else{
echo 'Er is een fout opgetreden, de beheerder is hiervan op de hoogte gesteld';
// roep mailfunctie aan om de error naar je te laten mailen
mail(jouwmail, onderwerp, mysql_error(), headers);
}
?>
Je kunt toch ook gewoon

<?php
$sql_result = mysql_query($sql_statement);
// controleren of query is gelukt
if($sql_result){
   //ga verder met je script
   }
//als query is mislukt
else{
   echo ('Er is een fout opgetreden, in de volgende het volgende sql-statement: ' .$sql_statement. '<br />Dit is de error: '. mysql_error());
   // roep mailfunctie aan om de error naar je te laten mailen
    mail(jouwmail, onderwerp, mysql_error(), headers);
  }
?>

?

[edit]50-ste Post!! :D [/edit]
Freek schreef op 11.11.2006 21:49
[edit]50-ste Post!! :D [/edit]

Gefeliciteerd.

Reageren