Door
kevin vdm
op 15-01-2011 18:15
gewijzigd op 15-01-2011 18:24
3.496 views
ok,
ik zou willen dat indien iemand een film wil toevoegen via een imdb url de query bekijkt of de film al in de database zit door de kolom imdb te vergelijken met de nieuwe link van de film ".$url." en indien de film bestaat de date in de database te updaten.
ik had zitten denken aan deze code:
<? php
mysql_query("INSERT INTO movies (name, rating, year, runtime, imdb)
VALUES ('".$movie->title()."', '".$movie->rating()."', '".$movie->year()."', '".$movie->runtime()."', '".$url."') ON DUPLICATE KEY UPDATE name=VALUES('".$movie->title()."'), rating=VALUES('".$movie->rating()."'), year=VALUES('".$movie->year()."'), runtime=VALUES('".$movie->runtime()."'), imbd = VALUES('".$url."'");
?>
maar blijkbaar werkt het niet op de 1 of andere manier ziet er iemand een fout?
de fout is: Call to undefined function msql_query().
de tabel werkt ook met een auto increment van de kolom id
Als je mysql gebruikt, zou ik eens proberen de mysql_* functies aan te roepen, in plaats van de msql_* functies ;) Voor PostgreSQL is het pgsql_* en voor MS SQL-server is het mssql_*. Je kan ook best een kijken voor PDO. Daar ben je snel mee weg.
Les 1:
Schrijf je queries overzichtelijk uit en voer deze niet direct aan een _query functie met ken het toe aan een variabele, zodat je een combinatie kunt maken error + statement
Les 2:
Leer eens fouten intrepeteren, moge duidelijk zijn dat je een typo gemaakt hebt
je bedoelt waarschijnlijk
mysql_query of mssql_query
Les 3:
Raadpleeg dan ook eerst je handleiding wat betreft de syntaxt
de error is:
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 ''Vampires Suck'), rating=VALUES('3.3'), year=VALUES('2010'), imbd = VALUES('http' at ...
nu kijkt hij niet voor duplicates en voegt hij de row 2 keer toe, dit is men tabel:
CREATE TABLE IF NOT EXISTS `movies` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`imdb` varchar(80) NOT NULL,
`year` int(5) NOT NULL,
`poster` varchar(255) NOT NULL default 'imdbnotavailable.png',
`runtime` int(4) NOT NULL,
`budget` varchar(255) NOT NULL,
`revenue` varchar(255) NOT NULL,
`rating` decimal(10,1) NOT NULL,
`cat1` varchar(20) NOT NULL,
`cat2` varchar(20) NOT NULL,
`cat3` varchar(20) NOT NULL,
`cat4` varchar(20) NOT NULL,
`cat5` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;
voor de geinteresseerden die willen weten hoe ik het dan toch heb weten op te lossen:
dus eerst kijken of de record bestaat door te kijken naar de imdb link als ze bestaat dan updaten anders toevoegen.
<?
if(mysql_num_rows(mysql_query("SELECT * FROM movies WHERE imdb='".$url."'"))){
$auto = mysql_query("update movies WHERE imdb='".$url."' SET name='".$movie->title()."', rating='".$movie->rating()."', year='".$movie->year()."', runtime='".$movie->runtime()."'");
}
else
{
$auto = mysql_query("INSERT INTO movies (name, rating, year, runtime, imdb)
VALUES ('".$movie->title()."', '".$movie->rating()."', '".$movie->year()."', '".$movie->runtime()."', '".$url."')");
}
?>