我的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”?
答案 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'参数相关的数据库配置吗?