2017-07-17 2 views
0

Ich bekomme immer noch mysql Fehler in meinem PHP-Skript.Unverständliche MySQL-Fehler in PHP (Tabelle existiert nicht, Gewerkschaftsabfrage)

Problematische Code:

$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)) { ... } 

Wenn ich diese Abfrage in phpMyAdmin setzen - alles ist in Ordnung, werde ich Ergebnis. Wenn ich diese Abfrage in die MySQL Workbench lege - alles ist OK, bekomme ich das Ergebnis.

UND JETZT: Wenn ich Skript mit Parameter (http://domain/index.php?site=ABC) ausführen - alles ist in Ordnung. Wenn ich Skript ohne Parameter (http://domain/index.php) ausführen - bekomme ich mysql Fehler bei dieser Abfrage: "Tabelle 'test.menu' existiert nicht".

Was "test.menu" ?! Wo ist "Test"? Ich möchte keinen "Test", ich habe keinen "Test" in meiner Abfrage. Und warum ist es auf Parameter in URL bezogen? Es ist keine dynamisch generierte Abfrage. Wo ist das Problem?

Sorry für mein Englisch

gelöst, Skript Struktur:

$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); 

Aber was ich nicht verstehe, ist: Warum es ohne "$ db" arbeiten, ist, wenn der Parameter 'Standort' ist in URL?

+0

Zuerst mysql_ * Erweiterung ist veraltet versuchen, mysqli_ * – JYoThI

+0

zu verwenden Ich weiß, aber es ist alt und sehr großes Projekt, es wird sehr schwierig sein, es neu zu machen. – Kenapuc

Antwort

0

Bitte überprüfen Sie Ihre MySQL-Konfiguration in PHP. Ich bin ziemlich sicher, dass Sie den Datenbanknamen als "Test" verwenden, weil Sie den Code von irgendwo kopiert haben. Ändern Sie es in den tatsächlichen Namen Ihrer Datenbank und es wird funktionieren.

Der zweite Parameter von mysql_query muss eine Verbindungsvariable sein.

<?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

Nichts wird "von irgendwo" kopiert und keine Datenbank wird "Test" genannt. – Kenapuc

+0

Kannst du deinen PHP mysql Verbindungscode posten –

+0

Siehe mein "Bearbeiten" für ein Beispiel –

-3

Könnten Sie vollständige PHP-Skript geben? ist die Datenbankkonfiguration mit dem Parameter 'site' verknüpft?

+0

Dies sollte ein Kommentar sein. –

+0

Nein, Datenbankkonfiguration bezieht sich nicht auf den Parameter 'Standort'. Es ist statisch. – Kenapuc

Verwandte Themen