这一切都在标题中。
我有这个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');当将$new和$old变量粘贴到PHPMyAdmin中进行测试时,它们将包含任何字符串。以$old = "media-player"; $new = "video-player";为例。
此外,我不确定反勾的正确使用,以及它们应该在哪里,什么时候,也许这是问题的一部分。
对于每个询问这个错误的人,对不起,我没有发布它。我肯定不会去重新创建错误并将其粘贴到这里。这是一个非常普遍的错误,“你在某处大约这四分之一英里的代码中有一个语法错误”。
发布于 2012-01-11 00:20:45
1)每条语句都需要在单独的mysql_query()调用中发送。
2)反引号很好,但不是必须的,因为这些表名中没有嵌入空格
3)我不知道您的数据结构,但是不带"where“子句的UPDATE可能会被认为是稍微不寻常的(除非它们是故意的单行表)
发布于 2012-01-11 00:25:41
为了保持代码的一致性,我倾向于总是去掉反标记,但这不会有什么不同,也不会导致错误。
如果代码在PHPmyadmin中运行,那么可能是$new和$old的问题,尝试测试它将$new和$old更改为设置值,例如$new="newtest"和$old="oldtest",看看是否有效,如果有效,您知道变量的错误,如果是这样,请发布它们。
此外,您可能只想尝试一次更新,这可能是因为您试图在一个查询中一起更新所有内容,因此您会收到错误。
https://stackoverflow.com/questions/8806494
复制相似问题