2017-07-17 52 views
0

我仍然在我的PHP腳本中收到mysql錯誤。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的 - 一切都OK,我會得到結果。當我把這個查詢放入MySQL Workbench時 - 一切正常,我會得到結果。

AND NOW:當我使用參數(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); 

,但我不明白的是:爲什麼沒有「$ DB」工作時的參數「網站」是在網址?

+0

首先mysql_ *擴展名被棄用嘗試使用mysqli_ * – JYoThI

+0

我知道,但它是舊的和非常大的項目,它將是非常困難的重拍它。 – Kenapuc

回答

0

請在PHP中檢查您的mysql配置。我很肯定你使用數據庫名稱作爲'測試',因爲你從某處複製了代碼。將其更改爲數據庫的實際名稱,它將起作用。

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); 
?> 
+0

「從某處」複製任何內容並且沒有數據庫命名爲「測試」。 – Kenapuc

+0

你可以發佈你的PHP mysql連接代碼 –

+0

查看我的「編輯」爲例 –

-3

你可以給完整的PHP腳本?是與'站點'參數相關的數據庫配置?

+0

這應該是一條評論。 –

+0

不,數據庫配置與'site'參數無關。它是靜態的。 – Kenapuc