PHP中难以理解的MySQL错误(表不存在,联合查询)

时间:2017-07-17 09:04:05

标签: php mysql union

我的PHP脚本中仍然出现mysql错误。

有问题的代码:

$mquery = mysql_query("SELECT m.`id`, m.`name`, NULL AS `type`, NULL AS `code`, 0 AS `cat` FROM `menu` m UNION ALL SELECT l.`id`, l.`name`, l.`type`, l.`code`, l.`cat` FROM `lines` l UNION ALL SELECT s.`id`, s.`name`, s.`site`, s.`site`, s.`cat` FROM `sites` s ORDER BY `name` ASC");
if(!$mquery) { echo mysql_error(); die(); }
while($mdata = mysql_fetch_assoc($mquery)) { ... }

当我将此查询放入PhpMyAdmin时 - 一切正常,我会得到结果。当我把这个查询放到MySQL Workbench中时 - 一切正常,我会得到结果。

现在:当我使用参数(http://domain/index.php?site=ABC)运行脚本时 - 一切正常。当我在没有参数(http://domain/index.php)的情况下运行脚本时 - 我在此查询中收到mysql错误:“表'test.menu'不存在”。

什么是“test.menu”?! “测试”在哪里?我不想要任何“测试”,我的查询中没有“测试”。为什么它与url中的参数有关?它不是动态生成的查询。哪里有问题?

抱歉我的英文

解决了,脚本结构:

$mydb = mysql_connect(...);
mysql_select_db(..., $mydb);
mysql_set_charset('utf8', $mydb);

function newMenu($db)
{
  $mquery = mysql_query("...", $db);
  if(!$mquery) { echo mysql_error(); die(); }
  while($mdata = mysql_fetch_assoc($mquery) { ... }
}

myMenu($mydb);

但我不明白的是:当参数'site'在url中时,为什么没有“$ db”?

2 个答案:

答案 0 :(得分:0)

请用PHP检查你的mysql配置。我很确定您使用的是数据库名称' test'因为你已经从某个地方复制了代码。将其更改为数据库的实际名称,它将起作用。

mysql_query的第二个参数必须是连接变量。

 <?php  
 $con = mysql_connect("localhost", "root", "mypass") or  
 die("Could not connect: " . mysql_error());  
 mysql_select_db("tutorials");  
 $result = mysql_query("select * from tutorials");  
 echo "<h2>Here is a list of the topics:</h2>";  
 while ($row = mysql_fetch_array($result)) {  
   echo $row['name']."<br />";  
 }  
mysql_close($con);  
?>  

答案 1 :(得分:-3)

你能提供完整的PHP脚本吗?是与'site'参数相关的数据库配置吗?