MultyQuery在phpmyadmin中工作,在Mysqli中不工作,在其他服务器上工作过
我正在使用Msqli进行多重查询,查询的工作方式与我在phpmyadmin中希望的完全相同 它不再适用于mysqli。服务器之间的查询没有更改 下面的查询在以前的LAMP安装中有效,但在当前安装中无效MultyQuery在phpmyadmin中工作,在Mysqli中不工作,在其他服务器上工作过,php,mysql,phpmyadmin,mysqli,Php,Mysql,Phpmyadmin,Mysqli,我正在使用Msqli进行多重查询,查询的工作方式与我在phpmyadmin中希望的完全相同 它不再适用于mysqli。服务器之间的查询没有更改 下面的查询在以前的LAMP安装中有效,但在当前安装中无效 $SQLquery ='set @type = \'\'; set @num = 1; SELECT RA.`DATE` as DATES, RA.`ADDR` as ADDR, RA.`QID` as QID, RT.`TAGS` as TAG, Q.`id` AS QUID, Q.`A
$SQLquery ='set @type = \'\';
set @num = 1;
SELECT
RA.`DATE` as DATES,
RA.`ADDR` as ADDR,
RA.`QID` as QID,
RT.`TAGS` as TAG,
Q.`id` AS QUID,
Q.`ADDR` AS QADDR,
Q.`ORIGINALTEXT` AS QTEXTS,
Q.`DATE` AS QDATES,
cs.`id` AS CUID,
cs.`ADDR` AS CADDR,
cs.`ORIGINALTEXT` AS CTEXTS,
cs.`DATE` AS CDATES,
sol.`id` AS SUID,
sol.`ORIGINALTEXT` AS STEXTS,
sol.`ADDR` AS SADDR,
sol.`DATE` AS SDATES,
prj.`id` AS PUID,
prj.`ORIGINALTEXT` AS PTEXTS,
prj.`ADDR` AS PADDR,
prj.`DATE` AS PDATES,
Max(Q.`DATE` ) AS Q,
Max(cs.`DATE` ) AS C,
Max(sol.`DATE` ) AS S,
Max(prj.`DATE` ) AS P,
#@num as row_number
@num:= if(@type = RA.`ADDR`, 1+@num, 1) as v_number,
@type := RA.`ADDR` as dummy
FROM (SELECT `id`,`TAGS`, `QID` from `REL_TAG` ) AS RT
inner Join (SELECT `DATE`, `ADDR`, `QID` from `REL_ADDR` order by DATE) AS RA ON ( RT.`QID` = RA.`QID`)
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `QUESTION`) AS Q ON ( RT.`QID` = Q.`QID`) and Q.`ADDR` = RA.`ADDR`
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `CASES` order by `CASES`.`DATE`) AS cs ON ( RT.`QID` = cs.`QID`) and cs.`ADDR` = RA.`ADDR`
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `SOLUTION` order by `SOLUTION`.`DATE`) AS sol ON ( RT.`QID` = sol.`QID`) and sol.`ADDR` = RA.`ADDR`
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `PROJECT` order by `PROJECT`.`DATE`) AS prj ON ( RT.`QID` = prj.`QID`) and prj.`ADDR` = RA.`ADDR`
where RT.`QID` = \''.NbOnly($Fetchmodifier).'\' Group by `QID`, addr, v_number LIMIT '.$Anstart.' ,'.$Ansnb.';';
更新
查询在日志中不返回任何错误,只返回nothing(null)
下面是执行MySQLi多查询的PHP代码
$mysqlin = new mysqli("localhost", "user", "pass", "db");
if (mysqli_error($mysqlin)) {
outputdataXML(sprintf("Connect Problem : %s\n", mysqli_error($mysqlin)));
exit();
}
if ($mysqlin->multi_query($SQLquery)) {
do {
if ($result = $mysqlin->store_result()) {
while ($row = $result->fetch_array(MYSQLI_BOTH)) {
if( $Foundrows = $row[0]){ //Maybe the problem is here ?
$Outputvalue[] = FormatFile($row);
}
}
$result->free();
}
if ($mysqlin->more_results()) {
}
} while ($mysqlin->more_results() && $mysqlin->next_result());
}
$mysqlin->close();
我发现了问题,一些但不是所有的表都是空的, 在没有任何记录的情况下 我给每个表添加了一个虚拟记录,有些表有记录,但有些没有记录, 现在,即使查询不匹配,连接仍然正确进行 我希望这能帮助很多人 当您使用MySQL“Join”时,您需要在连接表的每个和所有中有一条记录,无论是否使用它,例如:0,00-00-0000,Null,0,empty
只有这样,查询中包含的所有连接表才能工作。我发现了问题,一些但不是所有的表都是空的, 在没有任何记录的情况下 我给每个表添加了一个虚拟记录,有些表有记录,但有些没有记录, 现在,即使查询不匹配,连接仍然正确进行 我希望这能帮助很多人 当您使用MySQL“Join”时,您需要在连接表的每个和所有中有一条记录,无论是否使用它,例如:0,00-00-0000,Null,0,empty
只有这样,查询中包含的所有连接表才能工作。@Jon none,我启用了mysql日志检查错误,它只显示我发送的查询,它不返回任何东西我认为where条件中有一些错误,在php上没有正确转义end@raheel如果那样的话,它不会给我一个错误吗?条件正确吗??如果($Foundrows=$row[0]),则不会{always return true?最后一个if子句似乎为空。@Jon none,我启用了mysql日志检查错误,它只显示我发送的查询,它不返回任何内容。我认为where条件中存在一些错误,在php上没有正确转义end@raheel如果那样的话,它不会给我一个错误吗?条件正确吗t?if($Foundrows=$row[0]){是否总是返回true?最后一个if子句似乎为空。