В вашем SQL нет ничего плохого. Вы присваиваете $query
результат вашего mysql_query()
вызова:
$query = mysql_query("REPLACE into jos_mt_links
(link_id, link_name, alias, link_desc, user_id, link_approved, metadesc,
link_created, link_modified, website, price)
VALUES
('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')");
mysql_query()
возвращает true
или false
в результате запроса REPLACE
, но более важно то, что вы присваиваете результат, а не выполняемый SQL-запрос.
Кроме того, здесь:
if(mysql_query($query,$db))
Вы снова вызываете mysql_query()
для той же переменной $query
, которая теперь содержит значение true
(поскольку вы сказали, что ваш запрос работает, а база данных обновляется в обычном режиме). PHP интерпретирует логическое значение true
как строку '1'
, и вы говорите MySQL запустить запрос с именем 1
, который выдает эту ошибку.
Возможно, вы хотели назначить $query
таким образом, чтобы ваше условие if работало правильно:
$query = "REPLACE into jos_mt_links
(link_id, link_name, alias, link_desc, user_id, link_approved, metadesc,
link_created, link_modified, website, price)
VALUES
('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')";
И вызов вашего echo
внутри оператора if тоже.
Другое дело: как заметил Марк Бейкер, убедитесь, что ваши переменные экранированы с помощью mysql_real_escape_string()
, прежде чем воткнуть их прямо в ваш SQL, вот так.