将自定义MySQL查询移动到PHP中

时间:2013-07-19 20:40:04

标签: php mysql function mysqli

我写了一个查询,它直接在服务器上通过MySQL工作:

  

CREATE TABLE tmp_1(user1 varchar(255),pid int(11)); INSERT INTO famgallerytmp_1 SET user1 =(SELECT title FROM {{ 1}} WHERE cpg15x_albums =(SELECT援助来自cpg15x_pictures WHERE pid =(从cpg15x_pictures中选择max(pid))));       更新aidfamgallery SET tmp_1 =(SELECT MAX(pid)FROM cpg15x_pictures)       ;更新cpg15x_pictures f,tmp_1 t SET f.user1 = t.user1 WHERE f.pid = t.pid; DROP TABLE tmp_1;

问题来自尝试将其移至PHP:

  

cpg_db_query(“CREATE TABLE tmp_1(user1 varchar(255),pid int(11)); INSERT INTO pidfamgallery SET tmp_1 =(SELECT user1 FROM title WHERE cpg15x_albums =(SELECT援助来自cpg15x_pictures WHERE pid =(从cpg15x_pictures中选择max(pid))));       更新aidfamgallery SET tmp_1 =(SELECT MAX(pid)FROM cpg15x_pictures)       ;更新cpg15x_pictures f,tmp_1 t SET f.user1 = t.user1 WHERE f.pid = t.pid; DROP TABLE tmp_1;“)

经过一天的实验,应用程序不断给我这个严重的错误:

  

mySQL错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在附近使用正确的语法:

     
pid

我开始认为应用程序代码中某处存在冲突,因为我无法理解为什么它直接在服务器上正常工作,但在经过这么多的修改之后无法在PHP中工作。任何想法都将不胜感激。

'INSERT INTO cpg15x_tmp_1 SET `user1` = (SELECT `title` FROM cpg15x_albums WHERE ' at line 1. File: /home/content/47/9243147/html/family/include/functions.inc.php - Line: 270 内置于应用程序中。据我所知,它执行与cpg_db_query相同的操作。

相关文件:

2 个答案:

答案 0 :(得分:2)

cpg_db_querymysql_query的包装器;并且你只会运行一个查询 - 你试图在那里运行多个查询。

如果您想这样做,则必须将其分解为不同的查询,并单独运行:

cpg_db_query("CREATE TABLE cpg15x_tmp_1 (user1 varchar(255), pid int(11))");
cpg_db_query("INSERT INTO cpg15x_tmp_1 SET user1 = (SELECT title FROM cpg15x_albums WHERE aid = (SELECT aid FROM cpg15x_pictures WHERE pid = (select max(pid) from cpg15x_pictures)))");
cpg_db_query("UPDATE famgallery.cpg15x_tmp_1 SET pid = (SELECT MAX(pid) FROM cpg15x_pictures)");
cpg_db_query("UPDATE cpg15x_pictures f, cpg15x_tmp_1 t SET f.user1 = t.user1 WHERE f.pid = t.pid");
cpg_db_query("DROP TABLE cpg15x_tmp_1");

mysqli_*multi_query,这是我所知道的使用单个调用运行多个SQL查询的唯一方法。

答案 1 :(得分:0)

我不确定mysqli或cpg_db,但我知道mysql在一次提交中不支持多个查询。所以要说5个查询你必须做5个mysql_query。

我会检查以确保cpg_db一次支持多个查询。