我试图在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";
}
答案 0 :(得分: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()
查询的结果, 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')";
并在if语句中调用echo
。
另一件事:正如Mark Baker所指出的那样,请确保您的变量已使用mysql_real_escape_string()
进行转义,然后再直接将其粘贴到您的SQL中。