我试图在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";
}
最佳答案
您的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')";
并在if语句中调用您的
echo
。另一件事:正如Mark Baker所指出的那样,在将变量直接粘贴到SQL之前,请确保已使用
mysql_real_escape_string()
对变量进行了转义。关于php - 在MySQL中出现1064错误,但查询仍然完成?不知道为什么!,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2959386/