Я пытаюсь вставить много полей в базу данных MySQL, некоторые из них терпят неудачу, поэтому я добавляю код в свой PHP script, чтобы попытаться отследить, что происходит.
Замена, похоже, работает, поскольку я могу видеть, что поля заполняются в mysql, но я получаю эту ошибку:
1064: У вас есть ошибка в вашем SQL синтаксис; проверьте руководство, которое соответствует вашему серверу MySQL версии для правильного синтаксиса для использования рядом с '1' на линии 1
//insert query
if (strlen($link_name)>0)
{
$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')");
echo $link_name . "has been inserted <br />";
print "SQL-Query: ".$query."<br>";
if(mysql_query($query,$db))
{
echo "<center><font face='$fonts' size=2 color='$green'>";
echo " OK !</font><br><br>\n";
}
else
{
echo "<center><font face='$fonts' size=3 color='$red'>";
echo "Error<br><br>";
echo mysql_errno() . ":" . mysql_error() . "</font><br>\n";
}
В вашем 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 интерпретирует boolean 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.