显然,当从PHP发送时,此查询中存在SQL语法错误,但它在PHPMyAdmin上运行正常

时间:2012-01-10 16:12:51

标签: php mysql phpmyadmin

这一切都在标题中。

我有这个SQL查询,我知道这很难看,但它应该至少有效......当我在PHPMyAdmin中使用它时它会工作但是当从PHP发送时我从MySQL得到语法错误。 :(

INSERT INTO `shortname_revisions` (old_shortname , new_shortname) VALUES ('$old', '$new');

UPDATE `soft_data` SET shortname = REPLACE(shortname ,'$old', '$new');
UPDATE `shot_data` SET shortname = REPLACE(shortname ,'$old', '$new');
UPDATE `virus_scanning` SET shortname = REPLACE(shortname ,'$old', '$new');
UPDATE `lang_translations` SET shortname = REPLACE(shortname ,'$old', '$new');
UPDATE `ratings` SET shortname = REPLACE(shortname ,'$old', '$new');
UPDATE `file_data` SET shortname = REPLACE(shortname ,'$old', '$new');

粘贴到PHPMyAdmin进行测试时,$new$old变量将包含任何字符串。使用$old = "media-player"; $new = "video-player";作为示例。

此外,我不确定正确使用后蜱以及它们应该在何时以及何时,也许这是问题的一部分。

对于每个询问错误的人,抱歉,我没有发布。我肯定不会去重新创建错误以将其粘贴到此处。这是一个非常通用的“你在大约这个四分之一英里的代码中出现语法错误”错误。

2 个答案:

答案 0 :(得分:5)

1)每个语句都需要在单独的mysql_query()调用中发送。

2)反引号很好但不必要,因为这些表名中没有嵌入的空格

3)我不知道你的数据结构,但没有“where”子句的UPDATE可以被认为是有点不寻常(除非这些是故意的单行表)

答案 1 :(得分:2)

为了保持代码的一致性,我倾向于总是删除返回刻度,但这不会产生影响并且不会导致错误。

如果代码在PHPmyadmin中有效,则可能是$new$old的问题,请尝试对其进行测试,将$new$old更改为设置值,例如$new="newtest"$old="oldtest",看看是否有效,如果你知道变量的错误,如果是这种情况就发布它们。

此外,您可能只想尝试一次更新,可能是因为您尝试在一个查询中一起更新所有内容时出现错误。