0

我正在尝试向 MySQL 数据库中插入很多字段,但有些字段失败了,因此我在我的 PHP 脚本中添加了一些代码以尝试追踪正在发生的事情。

替换似乎有效,因为我可以看到在 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";
   }
4

1 回答 1

1

您的 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()返回truefalse作为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 语句中调用你的。

另一件事:正如 Mark Ba​​ker 所指出的,请确保您的变量已被转义,mysql_real_escape_string()然后再将它们直接粘贴到您的 SQL 中。

于 2010-06-02T16:08:32.640 回答